ΚΕΝΤΡΟ ΠΛΗ.ΝΕ.Τ. Ν. ΦΛΩΡΙΝΑΣ

Το Μοντέλο Αντικειμένου Εγγράφου (DOM)

 

Εισαγωγή στο XML DOM

Το Μοντέλο Αντικειμένου Εγγράφου της XML (XML Document Object Model, DOM) είναι μια προγραμματιστική διεπαφή (programming interface) για τα XML έγγραφα. Ορίζει τον τρόπο που μπορούμε να προσπελάσουμε και να χειριστούμε ένα XML έγγραφο. Σαν μια προδιαγραφή (specification) του W3C, ο αντικειμενικός στόχος του XML DOM είναι να παρέχει μια στάνταρτ προγραμματιστική διεπαφή σε μια ευρεία ποικιλία εφαρμογών. Το XML DOM είναι σχεδιασμένο για να μπορεί να χρησιμοποιηθεί με οποιαδήποτε γλώσσα προγραμματισμού και με οποιοδήποτε λειτουργικό σύστημα. Με το XML DOM μπορούμε να δημιουργήσουμε ένα XML έγγραφο, να πλοηγηθούμε στη δομή του και να προσθέσουμε, τροποποιήσουμε ή διαγράψουμε τα στοιχεία του.

 

Το Node Interface

Όπως θα δούμε και παρακάτω, ένα πρόγραμμα που αποκαλείται XML parser μπορεί να χρησιμοποιηθεί για να φορτώσουμε ένα XML έγγραφο στη μνήμη του υπολογιστή μας. Αφού φορτωθεί το έγγραφο, τα στοιχεία του μπορούν να ανακτηθούν και να διαχειριστούν με πρόσβαση στο DOM. Το DOM παριστάνει μια δενδροειδή άποψη (tree view) του XML εγγράφου. Το documentElement βρίσκεται στην κορυφή (top-level) του δένδρου και αυτό το στοιχείο περιέχει ένα ή περισσότερα childNodes που παριστάνουν τα κλαδιά του δένδρου.

Το Node Interface Model χρησιμοποιείται για να έχουμε πρόσβαση στα ανεξάρτητα στοιχεία του δένδρου. Για παράδειγμα, η ιδιότητα childNodes του documentElement μπορεί να προσπελαστεί με μια δομή (construct) for/each για να μπορέσουμε να απαριθμήσουμε τον κάθε ανεξάρτητο κόμβο (node). Το XML parser της Microsoft υποστηρίζει όλες τις συναρτήσεις που είναι απαραίτητες για να μπορέσουμε να διασχίσουμε το δένδρο των κόμβων (node tree), να έχουμε πρόσβαση στους κόμβους και τις τιμές των χαρακτηριστικών τους (attribute values), να εισάγουμε και να διαγράψουμε κόμβους και να μετατρέψουμε το node tree ξανά σε XML.

Οι περισσότερες από τις συναρτήσεις parser που παρουσιάζονται εδώ προέρχονται από τη σύσταση  (recommendation) XML DOM του W3C, εκτός από τις συναρτήσεις load και error του document. Πρέπει να έχουμε υπόψη μας ότι το επίσημο DOM δεν περιλαμβάνει στάνταρτ συναρτήσεις για το φόρτωμα των XML εγγράφων. Ο επόμενος πίνακας παρουσιάζει τους πιο συχνά χρησιμοποιούμενους τύπους κόμβων που υποστηρίζονται από το Microsoft XML parser :

Είδος Κόμβου

Παράδειγμα

Document type

<!DOCTYPE food SYSTEM "food.dtd">

Εντολή επεξεργασίας

<?xml version="1.0"?>

Στοιχείο (Element)

<drink type="beer"> Carlsberg </drink>

Χαρακτηριστικό (Attribute)

type="beer"

Κείμενο (Text)

Carlsberg

 

Αναλύοντας (Parsing) το DOM

Το XML parser της Microsoft είναι ένα συστατικό COM που δίνεται μαζί με τον Microsoft Internet Explorer 5.0 και είναι διαθέσιμο σε scripts που βρίσκονται μέσα σε HTML έγγραφα και ASP αρχεία. Για να διαβάσουμε, δημιουργήσουμε και διαχειριστούμε ένα XML έγγραφο, χρειαζόμαστε έναν XML parser. Το Microsoft XMLDOM parser περιλαμβάνει ένα μοντέλο προγραμματισμού το οποίο :

 Αν χρησιμοποιούμε την JavaScript στον IE 5.0, μπορούμε να δημιουργήσουμε ένα αντικείμενο XML εγγράφου με τον εξής κώδικα :

 var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")

 Αν χρησιμοποιούμε την VBScript, μπορούμε να δημιουργήσουμε ένα αντικείμενο XML εγγράφου (XML document object) με τον εξής κώδικα :

 set xmlDoc = CreateObject("Microsoft.XMLDOM")

 Αν χρησιμοποιούμε την VBScript σε μια Active Server Page (ASP), μπορούμε να χρησιμοποιήσουμε τον εξής κώδικα :

 set xmlDoc = Server.CreateObject("Microsoft.XMLDOM")

  

Φόρτωση ενός XML Αρχείου στον Parser

Ο επόμενος κώδικας φορτώνει ένα υπάρχον XML έγγραφο (note.xml) μέσα στον XML parser :

<script language="JavaScript">

var xmlDoc=new ActiveXObject("Microsoft.XMLDOM")

xmlDoc.async="false"

xmlDoc.load("note.xml")

// … επεξεργασία του εγγράφου

</script>

Η πρώτη γραμμή του script δημιουργεί ένα στιγμιότυπο (instance) του Microsoft XML parser, η τρίτη γραμμή λέει στον parser να φορτώσει ένα XML έγγραφο με όνομα note.xml και η δεύτερη γραμμή βεβαιώνει ότι ο parser θα σταματήσει την εκτέλεση μέχρις ότου να φορτωθεί πλήρως το έγγραφο.

 

Φόρτωση Καθαρού XML Κειμένου στον Parser

Ο ακόλουθος κώδικας φορτώνει ένα text string στον XML parser :

<script language="JavaScript"> 

var text="<note>"

text=text+"<to> Tove </to><from> Jani </from>"

text=text+"<heading> Reminder </heading>"

text=text+"<body> Don't forget me this weekend! </body>"

text=text+"</note>"

var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")

xmlDoc.async="false"

xmlDoc.loadXML(text)

// … επεξεργασία του εγγράφου

</script>

Η μέθοδος loadXML χρησιμοποιείται για να φορτώσουμε ένα text string.

 

Το Αντικείμενο parseError

Το αντικείμενο parseError μπορεί να χρησιμοποιηθεί για να εξάγουμε πληροφορίες λάθους από τον Microsoft XML parser. Το αντικείμενο parse-Error δεν αποτελεί μέρος του W3C DOM στάνταρτ. Αν προσπαθήσουμε να ανοίξουμε ένα XML έγγραφο, ο XML Parser ίσως να δημιουργήσει ένα λάθος (error). Έχοντας πρόσβαση στο αντικείμενο parseError, μπορούμε να μάθουμε τον ακριβή κώδικα του λάθους, το κείμενο του λάθους και ακόμη και τη γραμμή που προκάλεσε το λάθος.

Με τον επόμενο κώδικα μπορούμε να δοκιμάσουμε να φορτώσουμε ένα αρχείο που δεν υπάρχει και να εμφανίσουμε μερικές από τις ιδιότητες λάθους :

var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")

xmlDoc.async="false"

xmlDoc.load("ksdjf.xml")

document.write("<br>Error Code: ")

document.write(xmlDoc.parseError.errorCode)

document.write("<br>Error Reason: ")

document.write(xmlDoc.parseError.reason)

document.write("<br>Error Line: ")

document.write(xmlDoc.parseError.line)

Με τον επόμενο κώδικα αφήνουμε τον parser να φορτώσει ένα XML έγγραφο το οποίο δεν είναι σωστά διαμορφωμένο.

var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")

xmlDoc.async="false"

xmlDoc.load("note_error.xml")

document.write("<br>Error Code: ")

document.write(xmlDoc.parseError.errorCode)

document.write("<br>Error Reason: ")

document.write(xmlDoc.parseError.reason)

document.write("<br>Error Line: ")

document.write(xmlDoc.parseError.line)

 

Οι Ιδιότητες του parseError

Ιδιότητα

Περιγραφή

errorCode

Επιστρέφει τον κωδικό λάθους σε μορφή long integer

reason

Επιστρέφει ένα string που εξηγεί την αιτία του λάθους

line

Επιστρέφει τον αριθμό της γραμμής λάθους σε μορφή long integer

linePos

Επιστρέφει έναν long integer που παριστάνει τη θέση γραμμής του λάθους

srcText

Επιστρέφει ένα string που περιέχει τη γραμμή που προκάλεσε το λάθος

url

Επιστρέφει το URL που δείχνει στο φορτωμένο έγγραφο

filePos

Επιστρέφει έναν long integer που παριστάνει τη θέση αρχείου του λάθους

 

Διάσχιση του Δένδρου των Κόμβων (Node Tree)

Μια κοινή μέθοδος για να εξάγουμε τα στοιχεία της XML από ένα XML έγγραφο είναι να διασχίσουμε το δένδρο των κόμβων (traverse the node tree) και να εξάγουμε την τιμή κειμένου του κάθε στοιχείου. Ο επόμενος κώδικας της VBScript διασχίζει ένα δένδρο κόμβων της XML και εμφανίζει τα στοιχεία της XML στον φυλλομετρητή :

set xmlDoc=CreateObject("Microsoft.XMLDOM")

xmlDoc.async="false"

xmlDoc.load("note.xml")

for each x in xmlDoc.documentElement.childNodes

document.write(x.nodename)

document.write(": ")

document.write(x.text)

next

 

Παροχή HTML Περιεχομένου από XML Αρχεία

Μια από τις μεγάλες υποσχέσεις της XML είναι η δυνατότητα να διαχωρίσει τα HTML έγγραφα από τα δεδομένα τους. Χρησιμοποιώντας έναν XML parser μέσα στον φυλλομετρητή, μια HTML σελίδα μπορεί να κατασκευαστεί σαν ένα στατικό έγγραφο με ενσωματωμένο κώδικα της JavaScript για να παρέχει δυναμικά δεδομένα. Ο επόμενος κώδικας της JavaScript διαβάζει δεδομένα της XML από ένα XML έγγραφο και τα γράφει σε στοιχεία της HTML.

var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")

xmlDoc.async="false"

xmlDoc.load("note.xml")

nodes = xmlDoc.documentElement.childNodes

to.innerText = nodes.item(0).text

from.innerText = nodes.item(1).text

header.innerText = nodes.item(2).text

body.innerText = nodes.item(3).text

 

 

Πρόσβαση σε XML Στοιχεία με το Όνομα

Η πρόσβαση στα στοιχεία (elements) με αριθμό δεν είναι ο επιθυμητός τρόπος για να εξάγουμε στοιχεία της XML από ένα XML έγγραφο. Η χρήση ονομάτων είναι καλύτερη. Ο επόμενος κώδικας της JavaScript διαβάζει δεδομένα της XML από ένα XML έγγραφο και τα γράφει σε στοιχεία της HTML.

var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")

xmlDoc.async="false"

xmlDoc.load("note.xml")

to.innerText=xmlDoc.getElementsByTagName("to").item(0).text

from.innerText=xmlDoc.getElementsByTagName("from").item(0).text

          header.innerText=xmlDoc.getElementsByTagName("heading").item(0).text

body.innerText=xmlDoc.getElementsByTagName("body").item(0).text

Πρέπει να έχουμε υπόψη μας ότι το στοιχείο κειμένου (text element) ενός κόμβου (node) είναι ο κόμβος παιδί (child node) του στοιχείου. Για να εξάγουμε το κείμενο (Jani) από ένα στοιχείο όπως αυτό εδώ : <from> Jani </from>, πρέπει να έχουμε πρόσβαση στον κόμβο παιδί ως εξής : 

getElementsByTagName("from").item(0).text

και όχι ως εξής :

getElementsByTagName("from").text

 

Το Αντικείμενο HttpRequest

Το αντικείμενο HttpRequest παρέχει επικοινωνία στην πλευρά του πελάτη (client-side communication) μ’ έναν server.

Παραδείγματα

readyState

Πώς να επιστρέψουμε την κατάσταση (state) του εγγράφου. Αυτή η ιδιότητα αλλάζει τη στιγμή που φορτώνεται το έγγραφο.

<html>

<body>

<script type="text/javascript">

var xmlHttp=new ActiveXObject("Microsoft.XMLHTTP")

document.write(xmlHttp.readyState + "<br />")

xmlHttp.open("GET", "note.xml", false)

document.write(xmlHttp.readyState + "<br />")

xmlHttp.send()

document.write(xmlHttp.readyState + "<br />")

</script>

</body>

</html>

 

responseText

Πώς να επιστρέψουμε την αίτηση (request) σαν ένα string.

<html>

<body>

<script type="text/javascript">

var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP")

xmlHttp.open("GET", "note.xml", false)

xmlHttp.send()

xmlDoc=xmlHttp.responseText

document.write("<xmp>" + xmlDoc + "</xmp>")

</script>

</body>

</html>

 

status

Πώς να επιστρέψουμε την κατάσταση της λειτουργίας (operation) σαν κώδικα (code).

<html>

<body>

<script type="text/javascript">

var xmlHttp=new ActiveXObject("Microsoft.XMLHTTP")

xmlHttp.open("GET", "note.xml", false)

xmlHttp.send()

document.write(xmlHttp.status)

</script>

</body>

</html>

 

statusText

Πώς να επιστρέψουμε την κατάσταση της λειτουργίας (operation) σαν string.

<html>

<body>

<script type="text/javascript">

var xmlHttp=new ActiveXObject("Microsoft.XMLHTTP")

xmlHttp.open("GET", "note.xml", false)

xmlHttp.send()

document.write(xmlHttp.statusText)

</script>

</body>

</html>

Με το αντικείμενο httpRequest μπορούμε να στείλουμε μια αίτηση (request) από τον πελάτη (client) στον server. Αν χρησιμοποιούμε JavaScript στον IE 5.0, μπορούμε να δημιουργήσουμε το αντικείμενο httpRequest με τον εξής κώδικα :

var xmlHTTP = new ActiveXObject("Microsoft.XMLHTTP")

Αν χρησιμοποιούμε VBScript, δημιουργούμε το αντικείμενο httpRequest με τον εξής κώδικα :

set xmlHTTP = CreateObject("Microsoft.XMLHTTP")

Το αντικείμενο httpRequest δεν αποτελεί μέρος του W3C DOM standard.

 

Απόκτηση (Get) XML

Πώς να πάρουμε (get) ένα xml αρχείο από τον server χρησιμοποιώντας το αντικείμενο httpRequest.

var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP")

xmlHttp.open("GET", "note.xml", false)

xmlHttp.send()

xmlDoc=xmlHttp.responseText

<html>

<body>

<script type="text/javascript">

var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP")

xmlHttp.open("GET", "note.xml", false)

xmlHttp.send()

xmlDoc=xmlHttp.responseText

document.write("<xmp>" + xmlDoc + "</xmp>")

</script>

</body>

</html>

 

Αποστολή (Send) XML

Μπορούμε επίσης να στείλουμε ένα xml έγγραφο σε μια σελίδα ASP στον server, αναλύοντας την αίτηση (request) και στέλνοντας πίσω το αποτέλεσμα.

var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP")

xmlHttp.open("POST", "demo_dom_http.asp", false)

xmlHttp.send(xmlDoc)

document.write(xmlHttp.responseText)

Η σελίδα ASP, γραμμένη σε VBScript :

set xmldoc = Server.CreateObject("Microsoft.XMLDOM")

xmldoc.async=false

xmldoc.load(request)

for each x in xmldoc.documentElement.childNodes

if x.NodeName = "to" then name=x.text

next

response.write(name)

Στέλνουμε το αποτέλεσμα πίσω στον πελάτη (client) χρησιμοποιώντας την ιδιότητα response.write.

<html>

<body>

<script type="text/javascript">

var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP")

xmlHttp.open("GET", "note.xml", false)

xmlHttp.send()

xmlDoc=xmlHttp.responseText

xmlHttp.open("POST", "demo_dom_http.asp", false)

xmlHttp.send(xmlDoc)

document.write(xmlHttp.responseText)

</script>

</body>

</html>

 

Οι Ιδιότητες του Αντικειμένου httpRequest

Ιδιότητα

Περιγραφή

readyState

Επιστρέφει την κατάσταση (state) του εγγράφου

responseBody

Επιστρέφει την απόκριση (response) σαν έναν πίνακα από unsigned bytes

responseStream

Επιστρέφει την απόκριση (response) σαν ένα IStream

responseText

Επιστρέφει την απόκριση (response) σαν string

responseXML

Επιστρέφει την απόκριση (response) σαν ένα xml έγγραφο

status

Επιστρέφει τον κωδικό κατάστασης (status code) σαν αριθμό

statusText

Επιστρέφει την κατάσταση (status) σαν string

 

Οι Μέθοδοι του Αντικειμένου httpRequest

Ιδιότητα

Περιγραφή

abort()

Καταργεί το τρέχον http request

getAllResponseHeaders()

Επιστρέφει την τιμή των http headers

getResponseHeader(headerName)

Επιστρέφει την τιμή ενός καθορισμένου http header

open(method, url, async, userid, password)

Ανοίγει ένα http request και καθορίζει τις πληροφορίες

send()

Στέλνει το http request στον server

setRequestHeader(headerName, headerValue)

Καθορίζει το όνομα ενός http header

 

DOM – Οι Τύποι Κόμβων (NodeTypes)

Ας δούμε το XML αρχείο που έχουμε χρησιμοποιήσει στα παραδείγματα : note_special.xml.

<?xml version="1.0"?>

<note>

This is my text node

<![CDATA[ This is my CDATASection node ]]>

<!-- This is my Comment node -->

</note>

Παραδείγματα

NodeType

Διασχίζουμε το αρχείο note_special.xml για να πάρουμε (get) το node-Type των κόμβων (nodes).

<html>

<body>

<script type="text/vbscript">

                        set xmlDoc=CreateObject("Microsoft.XMLDOM")

xmlDoc.async="false"

xmlDoc.load("note_special.xml")

document.write(xmlDoc.nodetype & "<br />")

document.write(xmlDoc.documentElement.nodetype & "<br />")

for each x in xmlDoc.documentElement.childNodes

document.write(x.nodetype & "<br />")

next

</script>

</body>

</html>

 

NodeName

Διασχίζουμε το αρχείο note_special.xml για να πάρουμε (get) το node-Name των ίδιων κόμβων (nodes).

<html>

<body>

<script type="text/vbscript">

set xmlDoc=CreateObject("Microsoft.XMLDOM")

xmlDoc.async="false"

xmlDoc.load("note_special.xml")

document.write(xmlDoc.nodename & "<br />")

document.write(xmlDoc.documentElement.nodename & "<br />")

for each x in xmlDoc.documentElement.childNodes

document.write(x.nodename & "<br />")

next

</script>

</body>

</html>

 

NodeValue

Διασχίζουμε το αρχείο note_special.xml για να πάρουμε (get) το node-Value των ίδιων κόμβων (nodes).

<html>

<body>

<script type="text/vbscript">

set xmlDoc=CreateObject("Microsoft.XMLDOM")

xmlDoc.async="false"

xmlDoc.load("note_special.xml")

document.write(xmlDoc.nodeValue & "<br />")

           document.write(xmlDoc.documentElement.nodeValue & "<br />")

for each x in xmlDoc.documentElement.childNodes

document.write(x.nodeValue & "<br />")

next

</script>

</body>

</html>

 

NodeTypeString

Στον Internet Explorer 5, μπορούμε επίσης να πάρουμε (get) το node-Type σαν string με την ιδιότητα nodeTypeString.

<html>

<body>

<script type="text/vbscript">

set xmlDoc=CreateObject("Microsoft.XMLDOM")

xmlDoc.async="false"

xmlDoc.load("note_special.xml")

document.write(xmlDoc.nodetypestring & "<br />")

         document.write(xmlDoc.documentElement.nodetypestring & "<br />")

for each x in xmlDoc.documentElement.childNodes

document.write(x.nodetypestring & "<br />")

next

</script>

</body>

</html>

 

Οι Τύποι Κόμβων (Node Types)

Όλοι οι κόμβοι (nodes) ξεχωρίζονται σε διαφορετικούς τύπους. Ακολουθεί μια λίστα των τύπων και τι επιστρέφουν οι ιδιότητες nodeName και nodeValue. Στον Internet Explorer 5 μπορούμε να χρησιμοποιήσουμε την ιδιότητα nodeTypeString για να επιστρέψουμε το nodeType σαν string.

nodeType

nodeTypeString

nodeName

nodeValue

1

element

tagName

null

2

attribute

name

value

3

text

#text

content of node

4

cdatasection

#cdatasection

content of node

5

entityreference

entity reference name

null

6

entity

entity name

null

7

processinginstruction

target

content of node

8

comment

#comment

comment text

9

document

#document

null

10

documenttype

doctype name

null

11

documentfragment

#document

fragment null

12

notation

notation name

null

NodeTypes - Named Constants

NodeType

Named Constant

1

ELEMENT_NODE

2

ATTRIBUTE_NODE

3

TEXT_NODE

4

CDATA_SECTION_NODE

5

ENTITY_REFERENCE_NODE

6

ENTITY_NODE

7

PROCESSING_INSTRUCTION_NODE

8

COMMENT_NODE

9

DOCUMENT_NODE

10

DOCUMENT_TYPE_NODE

11

DOCUMENT_FRAGMENT_NODE

12

NOTATION_NODE

 

DOM – Το Αντικείμενο Node

Ας ρίξουμε μια ματιά στο XML αρχείο που έχουμε χρησιμοποιήσει στα παραδείγματα : note.xml.

<?xml version="1.0"?>

<note time="12:03:46">

<to>Tove</to>

<from>Jani</from>

<heading>Reminder</heading>

<body>Don't forget me this weekend!</body>

</note>

 

Παραδείγματα

nodeName

Πώς να επιστρέψουμε το όνομα ενός κόμβου (node). 

<html>

<body>

<script type="text/vbscript">

set xmlDoc=CreateObject("Microsoft.XMLDOM")

xmlDoc.async="false"

xmlDoc.load("note.xml")

for each x in xmlDoc.documentElement.childnodes

document.write(x.nodeName & "<br />")

next

</script>

</body>

</html>

                  

nodeValue

Πώς να επιστρέψουμε την τιμή ενός κόμβου (node).

<html>

<body>

<script type="text/vbscript">

set xmlDoc=CreateObject("Microsoft.XMLDOM")

xmlDoc.async="false"

xmlDoc.load("note.xml")

for each x in xmlDoc.documentElement.childnodes

document.write(x.childnodes(0).nodevalue & "<br />")

next

</script>

</body>

</html>

 

nextSibling

Πώς να επιστρέψουμε το όνομα του κόμβου nextSibling.

<html>

<body>

<script type="text/vbscript">

set xmlDoc=CreateObject("Microsoft.XMLDOM")

xmlDoc.async="false"

xmlDoc.load("note.xml")

document.write(xmlDoc.documentElement.childNodes(0).

nodeName)

document.write("<br />")

document.write(xmlDoc.documentElement.childNodes(0).

nextSibling.nodeName)

</script>

</body>

</html>

 

Text

Στον Internet Explorer 5 μπορούμε να επιστρέψουμε το κείμενο από έναν κόμβο και όλους τους κόμβους παιδιά (child nodes).

<html>

<body>

<script type="text/vbscript">

set xmlDoc=CreateObject("Microsoft.XMLDOM")

xmlDoc.async="false"

xmlDoc.load("note.xml")

document.write(xmlDoc.text)

</script>

</body>

</html>

 

xml

Στον Internet Explorer 5 μπορούμε να επιστρέψουμε το xml από έναν κόμβο και όλους τους κόμβους παιδιά (child nodes).

<html>

<body>

<script type="text/vbscript">

set xmlDoc=CreateObject("Microsoft.XMLDOM")

xmlDoc.async="false"

xmlDoc.load("note.xml")

document.write("<xmp>" & xmlDoc.xml & "</xmp>")

</script>

</body>

</html>

 

appendChild

Πώς να δημιουργήσουμε έναν κόμβο στοιχείο (element node) μ’ έναν text node και μετά να το προσθέσουμε σαν έναν κόμβο παιδί (child node).

<html>

<body>

<script type="text/vbscript">

set xmlDoc=CreateObject("Microsoft.XMLDOM")

xmlDoc.async="false"

xmlDoc.load("note.xml")

document.write("The original XML:")

document.write("<xmp>" & xmlDoc.xml & "</xmp>")

set newnode=xmldoc.createElement("cancel")

set newtext=xmldoc.createTextNode("I must cancel")

newnode.appendChild(newtext)

xmldoc.documentElement.appendchild(newnode)

document.write("After appending the new node:")

document.write("<xmp>" & xmlDoc.xml & "</xmp>")

</script>

</body>

</html>

 

insertBefore

Πώς να δημιουργήσουμε έναν κόμβο κειμένου (text node) και μετά να τον εισάγουμε πριν από έναν καθορισμένο κόμβο.

<html>

<body>

<script type="text/vbscript">

set xmlDoc=CreateObject("Microsoft.XMLDOM")

xmlDoc.async="false"

xmlDoc.load("note.xml")

set x=xmldoc.documentElement

document.write("The original XML:")

document.write("<xmp>" & xmlDoc.xml & "</xmp>")

set newtext=xmldoc.createTextNode("I must cancel")

call x.insertBefore(newtext, x.firstChild)

document.write("After inserting the text node:")

document.write("<xmp>" & xmlDoc.xml & "</xmp>")

</script>

</body>

</html>

 

Το Αντικείμενο Node

Το αντικείμενο node παριστάνει έναν οποιονδήποτε κόμβο στο δένδρο των κόμβων (node tree). Ένας κόμβος μπορεί να είναι ένας κόμβος στοιχείο (element node), ένας κόμβος κειμένου (text node) ή ένας άλλος τύπος κόμβου απ’ αυτούς που επεξηγήθηκαν στο DOM nodeType. Όλοι αυτοί οι τύποι κόμβων έχουν ιδιότητες (properties) και μεθόδους (methods). Ακολουθούν οι γενικές ιδιότητες και μέθοδοι γι’ όλους τους τύπους κόμβου.

 

Ιδιότητες του Node

Όνομα

Περιγραφή

attributes

Επιστρέφει ένα NamedNodeMap που περιέχει όλα τα χαρακτηριστικά (attributes) ενός κόμβου

childNodes

Επιστρέφει ένα NodeList που περιέχει όλους τους κόμβους παιδιά ενός κόμβου

firstChild

Επιστρέφει τον πρώτο κόμβο παιδί ενός κόμβου

lastChild

Επιστρέφει τον τελευταίο κόμβο παιδί ενός κόμβου

nextSibling

Επιστρέφει τον επόμενο κόμβο sibling. Δύο κόμβοι είναι siblings αν έχουν τον ίδιο κόμβο πατέρα (parent node)

nodeName

Επιστρέφει το nodeName, ανάλογα με τον τύπο

nodeType

Επιστρέφει το nodeType σαν αριθμό

nodeValue

Επιστρέφει ή ορίζει την τιμή ενός κόμβου, ανάλογα με τον τύπο

ownerDocument

Επιστρέφει το root node του εγγράφου

parentNode

Επιστρέφει το parent node ενός κόμβου

previousSibling

Επιστρέφει τον προηγούμενο κόμβο sibling. Δύο κόμβοι είναι siblings αν έχουν τον ίδιο κόμβο πατέρα (parent node)

 

Μέθοδοι του Node

Όνομα

Περιγραφή

appendChild(newChild)

Προσαρτά τον κόμβο node newChild στο τέλος των κόμβων παιδιών αυτού του κόμβου

cloneNode(boolean)

Επιστρέφει έναν ακριβή κλώνο αυτού του κόμβου. Αν η boolean τιμή είναι ίση με true, ο κλωνοποιημένος κόμβος θα περιέχει επίσης όλους τους κόμβους παιδιά

hasChildNodes()

Επιστρέφει true αν ο κόμβος έχει κόμβους παιδιά

insertBefore(newNode, refNode)

Εισάγει έναν νέο κόμβο, τον newNode, πριν από τον υπάρχοντα κόμβο refNode

removeChild(nodeName)

Απομακρύνει τον καθορισμένο κόμβο nodeName

replaceChild(newNode,oldNode)

Αντικαθιστά τον κόμβο oldNode με τον κόμβο newNode

 

Οι Ιδιότητες Κόμβου του IE5

Το αντικείμενο node έχει μερικές ιδιότητες και μεθόδους που ορίζονται μόνο στον Internet Explorer 5.

Όνομα

Περιγραφή

basename

Επιστρέφει το nodeName χωρίς τα namespaces

dataType

Επιστρέφει ή ορίζει το dataType αυτού του κόμβου

definition

 

nodeTypeString

Επιστρέφει το nodeType σαν string

nodeTypedValue

 

specified

Επιστρέφει το αν το nodeValue καθορίζεται ή όχι στο DTD/Schema

Text

Επιστρέφει ή ορίζει το κείμενο αυτού του κόμβου και όλων των κόμβων παιδιών του

Xml

Επιστρέφει ή ορίζει το xml αυτού του κόμβου και όλων των κόμβων παιδιών του

 

Οι Μέθοδοι Κόμβου του IE5

Όνομα

Περιγραφή

selectNodes(pattern)

 

selectSingleNode(pattern)

 

transformNode(stylesheet)

Επεξεργάζεται τον κόμβο και τους κόμβους παιδιά του με το καθορισμένο XSL stylesheet και επιστρέφει το αποτέλεσμα

 

DOM – Το Αντικείμενο NodeList

Ας ρίξουμε μια ματιά στο XML αρχείο που έχουμε χρησιμοποιήσει στα παραδείγματα : note.xml.

<?xml version="1.0"?>

<note time="12:03:46">

<to>Tove</to>

<from>Jani</from>

<heading>Reminder</heading>

<body>Don't forget me this weekend!</body>

</note>

 

Παραδείγματα

length

Πώς να επιστρέψουμε τον αριθμό των κόμβων σε μια nodeList.

<html>

<body>

<script type="text/vbscript">

set xmlDoc=CreateObject("Microsoft.XMLDOM")

xmlDoc.async="false"

xmlDoc.load("note.xml")

document.write("The number of nodes in xmlDoc.documentElement.childnodes are : <br />")

document.write(xmlDoc.documentElement.childnodes.length)

</script>

</body>

</html>

 

item

Πώς να επιστρέψουμε έναν καθορισμένο κόμβο σε μια nodeList.

<html>

<body>

<script type="text/vbscript">

set xmlDoc=CreateObject("Microsoft.XMLDOM")

xmlDoc.async="false"

xmlDoc.load("note.xml")

document.write("The nodeName of the third node is:<br />")

document.write(xmlDoc.documentElement.childNodes.item(2).nodeName)

</script>

</body>

</html>

 

nextNode()

Στον Internet Explorer 5 μπορούμε να επιστρέψουμε τον επόμενο κόμ-βο σε μια nodeList.

<html>

<body>

<script type="text/vbscript">

set xmlDoc=CreateObject("Microsoft.XMLDOM")

xmlDoc.async="false"

xmlDoc.load("note.xml")

set x=xmlDoc.documentElement.childnodes

set y=x.nextNode()

document.write(y.nodename & "<br />")

set y=x.nextNode()

document.write(y.nodename & "<br />")

set y=x.nextNode()

document.write(y.nodename & "<br />")

set y=x.nextNode()

document.write(y.nodename & "<br />")

</script>

</body>

</html>

 

reset()

Στον Internet Explorer 5 μπορούμε να επαναφέρουμε (reset) τον δείκτη στον πρώτο κόμβο μιας nodeList.

<html>

<body>

<script type="text/vbscript">

set xmlDoc=CreateObject("Microsoft.XMLDOM")

xmlDoc.async="false"

xmlDoc.load("note.xml")

set x=xmlDoc.documentElement.childnodes

set y=x.nextNode()

document.write(y.nodename & "<br />")

set y=x.nextnode()

document.write(y.nodename & "<br />")

set y=x.nextNode()

document.write(y.nodename & "<br />")

x.reset()

set y=x.nextNode()

document.write(y.nodename & "<br />")

</script>

</body>

</html>

 

Το Αντικείμενο NodeList

Το αντικείμενο nodeList παριστάνει έναν κόμβο (node) και τους κόμβους παιδιά του (child nodes) σαν ένα δένδρο κόμβων (node tree). Ακολουθούν η ιδιότητα και η μέθοδος που υπάρχουν για το αντικείμενο nodeList.

Η Ιδιότητα του NodeList

 

Η Μέθοδος του NodeList

 

Οι Μέθοδοι NodeList του ΙΕ5

Το αντικείμενο nodeList έχει μερικές μεθόδους που ορίζονται μόνο στον Internet Explorer 5.

 

DOM – Το Αντικείμενο Document

Ας ρίξουμε μια ματιά στο XML αρχείο που έχουμε χρησιμοποιήσει στα παραδείγματα : note.xml.

<?xml version="1.0"?>

<note time="12:03:46">

<to>Tove</to>

<from>Jani</from>

<heading>Reminder</heading>

<body>Don't forget me this weekend!</body>

</note>

 

Παραδείγματα

documentElement

Πώς να επιστρέψουμε το όνομα κόμβου (node name) του root element.

<html>

<body>

<script type="text/vbscript">

set xmlDoc=CreateObject("Microsoft.XMLDOM")

xmlDoc.async="false"

xmlDoc.load("note.xml")

document.write(xmlDoc.documentElement.nodeName)

</script>

</body>

</html>

 

createCDATASection

Πώς να δημιουργήσουμε έναν κόμβο CDATA και μετά να τον προσαρτήσουμε σε μια nodeList.

<html>

<body>

<script type="text/vbscript">

set xmlDoc=CreateObject("Microsoft.XMLDOM")

xmlDoc.async="false"

xmlDoc.load("note.xml")

document.write("The original XML : ")

document.write("<xmp>" & xmlDoc.xml & "</xmp>")

set newnode=xmldoc.createCDATASection("This is a CDATASection node")

xmldoc.documentElement.appendchild(newnode)

document.write("After appending the new node : ")

document.write("<xmp>" & xmlDoc.xml & "</xmp>")

</script>

</body>

</html>

 

createComment

Πώς να δημιουργήσουμε έναν κόμβο σχολίου (comment node) και μετά να τον προσαρτήσουμε σε μια nodeList.

<html>

<body>

<script type="text/vbscript">

set xmlDoc=CreateObject("Microsoft.XMLDOM")

xmlDoc.async="false"

xmlDoc.load("note.xml")

document.write("The original XML : ")

document.write("<xmp>" & xmlDoc.xml & "</xmp>")

set newnode=xmldoc.createComment("This is a comment node")

xmldoc.documentElement.appendchild(newnode)

document.write("After appending the new node : ")

document.write("<xmp>" & xmlDoc.xml & "</xmp>")

</script>

</body>

</html>

 

createElement

Πώς να δημιουργήσουμε ένα στοιχείο και μετά να το προσαρτήσουμε σε μια nodeList.

<html>

<body>

<script type="text/vbscript">

set xmlDoc=CreateObject("Microsoft.XMLDOM")

xmlDoc.async="false"

xmlDoc.load("note.xml")

document.write("The original XML : ")

document.write("<xmp>" & xmlDoc.xml & "</xmp>")

set newnode=xmldoc.createElement("cancel")

xmldoc.documentElement.appendchild(newnode)

document.write("After appending the new node : ")

document.write("<xmp>" & xmlDoc.xml & "</xmp>")

</script>

</body>

</html>

 

createTextNode

Πώς να δημιουργήσουμε έναν κόμβο κειμένου και μετά να τον προσαρτήσουμε σε μια nodeList.

<html>

<body>

<script type="text/vbscript">

set xmlDoc=CreateObject("Microsoft.XMLDOM")

xmlDoc.async="false"

xmlDoc.load("note.xml")

document.write("The original XML : ")

document.write("<xmp>" & xmlDoc.xml & "</xmp>")

set newtext=xmldoc.createTextNode("I must cancel")

xmldoc.documentElement.appendchild(newtext)

document.write("After appending the new node : ")

document.write("<xmp>" & xmlDoc.xml & "</xmp>")

</script>

</body>

</html>

 

getElementsByTagName

Πώς να επιστρέψουμε την τιμή ενός καθορισμένου κόμβου.

<html>

<body>

<script type="text/vbscript">

set xmlDoc=CreateObject("Microsoft.XMLDOM")

xmlDoc.async="false"

xmlDoc.load("cd_catalog.xml")

set x=xmlDoc.getElementsByTagName("ARTIST")

for i = 1 to x.length

document.write(x.item(i-1).text)

document.write("<br>")

next

</script>

</body>

</html>

 

Το Αντικείμενο Document

Το αντικείμενο document είναι το root element στο δένδρο των κόμβων (node tree). Όλοι οι κόμβοι που υπάρχουν στο δένδρο των κόμβων είναι κόμβοι παιδιά (childNodes) του στοιχείου document. Το στοιχείο document είναι απαραίτητο σ’ όλα τα XML έγγραφα. Ακολουθούν οι ιδιότητες και οι μέθοδοι που υπάρχουν για το αντικείμενο document.

Οι Ιδιότητες του Document

Όνομα

Περιγραφή

documentElement

Επιστρέφει το root element του document

doctype

Επιστρέφει το DTD ή το Schema του document

implementation

Επιστρέφει το implementation object για ένα συγκεκριμένο document

 

Οι Μέθοδοι του Document

Όνομα

Περιγραφή

createAttribute(attributeName)

Δημιουργεί έναν attribute node με το καθορισμένο attribute name

createCDATASection(text)

Δημιουργεί ένα CDATASection που περιέχει το καθορισμένο κείμενο

createComment(text)

Δημιουργεί έναν comment node που περιέχει το καθορισμένο κείμενο

createDocumentFragment()

Δημιουργεί ένα άδειο αντικείμενο documentFragment

createElement(tagName)

Δημιουργεί ένα στοιχείο με το καθορισμένο tagName

createEntityReference(referenceName)

Δημιουργεί ένα entityReference με το καθορισμένο referenceName

createProcessingInstruction(target, text)

Δημιουργεί έναν processingInstruction node που περιέχει το καθορισμένο target και text

createTextNode(text)

Δημιουργεί έναν κόμβο κειμένου (text node) που περιέχει το καθορισμένο κείμενο

getElementsByTagName(tagName)

Επιστρέφει τον καθορισμένο κόμβο και όλους τους κόμβους παιδιά του σαν ένα nodeList

 

DOM – Το Αντικείμενο Element

Ας ρίξουμε μια ματιά στο XML αρχείο που έχουμε χρησιμοποιήσει στα παραδείγματα : note.xml.

<?xml version="1.0"?>

<note time="12:03:46">

<to>Tove</to>

<from>Jani</from>

<heading>Reminder</heading>

<body>Don't forget me this weekend!</body>

</note>

 

Παραδείγματα

TagName

Πώς να επιστρέψουμε το tag name ενός κόμβου.

<html>

<body>

<script type="text/vbscript">

set xmlDoc=CreateObject("Microsoft.XMLDOM")

xmlDoc.async="false"

xmlDoc.load("note.xml")

for each x in xmlDoc.documentElement.childNodes

document.write(x.tagName & "<br />")

next

</script>

</body>

</html>

 

getElementsByTagName

Πώς να επιστρέψουμε την τιμή ενός καθορισμένου κόμβου.

<html>

<body>

<script type="text/vbscript">

set xmlDoc=CreateObject("Microsoft.XMLDOM")

xmlDoc.async="false"

xmlDoc.load("cd_catalog.xml")

set x=xmlDoc.getElementsByTagName("ARTIST")

for i = 1 to x.length

document.write(x.item(i-1).text)

document.write("<br>")

next

</script>

</body>

</html>

 

getAttribute

Πώς να επιστρέψουμε την τιμή ενός χαρακτηριστικού (attribute).

<html>

<body>

<script type="text/vbscript">

set xmlDoc=CreateObject("Microsoft.XMLDOM")

xmlDoc.async="false"

xmlDoc.load("note.xml")

set x=xmlDoc.getElementsByTagName("note")

document.write(x.item(0).getattribute("time"))

</script>

</body>

</html>

 

setAttribute

Πώς να αλλάξουμε την τιμή ενός χαρακτηριστικού (attribute).

<html>

<body>

<script type="text/vbscript">

set xmlDoc=CreateObject("Microsoft.XMLDOM")

xmlDoc.async="false"

xmlDoc.load("note.xml")

document.write("The original XML")

document.write("<xmp>" & xmldoc.xml & "</xmp>")

set x=xmlDoc.getElementsByTagName("note")

call x.item(0).setAttribute("time","23:37:19")

document.write("The XML after changeing the attribute")

document.write("<xmp>" & xmldoc.xml & "</xmp>")

</script>

</body>

</html>

 

setAttribute 2

Πώς να ορίσουμε ένα νέο χαρακτηριστικό (attribute) καθώς και την τιμή του.

<html>

<body>

<script type="text/vbscript">

set xmlDoc=CreateObject("Microsoft.XMLDOM")

xmlDoc.async="false"

xmlDoc.load("note.xml")

document.write("The original XML")

document.write("<xmp>" & xmldoc.xml & "</xmp>")

set x=xmlDoc.getElementsByTagName("note")

call x.item(0).setAttribute("year","2000")

document.write("The XML after setting the attribute")

document.write("<xmp>" & xmldoc.xml & "</xmp>")

</script>

</body>

</html>

 

Το Αντικείμενο Element

Το αντικείμενο element παριστάνει τους κόμβους στοιχείου (element nodes) στο έγγραφο (document). Αν ένας κόμβος στοιχείο (element node) περιέχει κείμενο, αυτό το κείμενο παριστάνεται σ’ έναν κόμβο κειμένου (text node). Ακολουθούν οι ιδιότητες και οι μέθοδοι που υπάρχουν για το αντικείμενο element.

 

Οι Ιδιότητες του Element

 

Οι Μέθοδοι του Element

Όνομα

Περιγραφή

getAttribute(attributeName)

Επιστρέφει την τιμή του καθορισμένου χαρακτηριστικού

getAttributeNode(attributeName)

Επιστρέφει το καθορισμένο χαρακτηριστικό του κόμβου σαν ένα αντικείμενο

getElementsByTagName(tagName)

Επιστρέφει τον καθορισμένο κόμβο και όλους τους κόμβους παιδιά του σαν μια nodeList

normalize()

Τοποθετεί τους κόμβους κειμένου (text nodes) αυτού του στοιχείου και όλους τους κόμβους παιδιά του σ’ έναν κόμβο κειμένου και δεν επιστρέφει τίποτα

removeAttribute(attributeName)

Αφαιρεί την τιμή του καθορισμένου χαρακτηριστικού και εισάγει την προκαθορισμένη τιμή του χαρακτηριστικού, αν υπάρχει τέτοια

removeAttributeNode(attributeNode)

Αφαιρεί το καθορισμένο χαρακτηριστικό του κόμβου και εισάγει την προκαθορισμένη τιμή του χαρακτηριστικού του κόμβου, αν υπάρχει τέτοια

setAttribute(attributeName, attributeValue)

Εισάγει ένα νέο χαρακτηριστικό

setAttributeNode(attributeNodeName)

Εισάγει ένα νέο χαρακτηριστικό κόμβου

 

DOM – Το Αντικείμενο Attr

Ας ρίξουμε μια ματιά στο XML αρχείο που έχουμε χρησιμοποιήσει στα παραδείγματα : note.xml.

<?xml version="1.0"?>

<note time="12:03:46">

<to>Tove</to>

<from>Jani</from>

<heading>Reminder</heading>

<body>Don't forget me this weekend!</body>

</note>

Παραδείγματα

name

Πώς να επιστρέψουμε το όνομα ενός χαρακτηριστικού (attribute).

<html>

<body>

<script type="text/vbscript">

set xmlDoc=CreateObject("Microsoft.XMLDOM")

xmlDoc.async="false"

xmlDoc.load("note.xml")

for each x in xmlDoc.documentElement.attributes

document.write(x.name)

next

</script>

</body>

</html>

 

value

Πώς να επιστρέψουμε την τιμή ενός χαρακτηριστικού (attribute).

<html>

<body>

<script type="text/vbscript">

set xmlDoc=CreateObject("Microsoft.XMLDOM")

xmlDoc.async="false"

xmlDoc.load("note.xml")

for each x in xmlDoc.documentElement.attributes

document.write(x.value)

next

</script>

</body>

</html>

 

specified

Επιστρέφει True αν η τιμή είναι ορισμένη στο έγγραφο και False αν η τιμή είναι μια προκαθορισμένη τιμή (default value) στο DTD/Schema.

<html>

<body>

<script type="text/vbscript">

set xmlDoc=CreateObject("Microsoft.XMLDOM")

xmlDoc.async="false"

xmlDoc.load("note.xml")

for each x in xmlDoc.documentElement.attributes

document.write(x.specified)

next

</script>

<p> This property returns True if the value is set in the document, False if the value is a default value in the DTD/Schema </p>

</body>

</html>

 

Το Αντικείμενο Attr

Το αντικείμενο attr επιστρέφει ένα χαρακτηριστικό (attribute) ενός αντικειμένου element σαν ένα χαρακτηριστικό κόμβου (attribute node). Το αντικείμενο attr έχει τις ίδιες ιδιότητες και μεθόδους όπως όλοι οι κόμβοι. Ακολουθούν οι ιδιότητες που υπάρχουν μόνο για το αντικείμενο attribute.

Οι Ιδιότητες του Attr

 

DOM – Το Αντικείμενο Text

Ας ρίξουμε μια ματιά στο XML αρχείο που έχουμε χρησιμοποιήσει στα παραδείγματα : note.xml.

<?xml version="1.0"?>

<note time="12:03:46">

<to>Tove</to>

<from>Jani</from>

<heading>Reminder</heading>

<body>Don't forget me this weekend!</body>

</note>

 

Παραδείγματα

splitText

Η μέθοδος SplitText διαιρεί ένα κείμενο σ’ έναν δεδομένο χαρακτήρα και επιστρέφει το υπόλοιπο κείμενο.

<html>

<body>

<script type="text/vbscript">

Set xmlDoc=CreateObject("microsoft.xmldom")

xmlDoc.async="false"

xmlDoc.load("note.xml")

set textNode=xmlDoc.documentElement.childNodes(3).childNodes(0)

set splitNode=textNode.splitText(10)

document.write("<p>The text node after the splitText() method : <br />")

document.write(textNode.text & "</p>")

document.write("<p>The returned value after the splitText method : <br />")

document.write(splitNode.text & "</p>")

</script>

</body>

</html>

 

createTextNode

Πώς να δημιουργήσουμε έναν κόμβο κειμένου (text node).

<html>

<body>

<script type="text/vbscript">

set xmlDoc=CreateObject("Microsoft.XMLDOM")

xmlDoc.async="false"

xmlDoc.load("note.xml")

set x=xmldoc.documentElement

document.write("The original XML : ")

document.write("<xmp>" & xmlDoc.xml & "</xmp>")

set newtext=xmldoc.createTextNode("I must cancel")

call x.insertBefore(newtext, x.firstChild)

document.write("After inserting the text node : ")

document.write("<xmp>" & xmlDoc.xml & "</xmp>")

</script>

</body>

</html>

 

Το Αντικείμενο Text

Το αντικείμενο text παριστάνει το κείμενο (text) που υπάρχει μέσα σ’ ένα στοιχείο (element) σαν κόμβος (node). Ακολουθεί η μέθοδος που υπάρχει για το αντικείμενο text.

Η Μέθοδος του Text

 

DOM – Το Αντικείμενο CDATASection

Ας ρίξουμε μια ματιά στο XML αρχείο που έχουμε χρησιμοποιήσει στα παραδείγματα : note.xml.

<?xml version="1.0"?>

<note time="12:03:46">

<to>Tove</to>

<from>Jani</from>

<heading>Reminder</heading>

<body>Don't forget me this weekend!</body>

</note>

 

Παραδείγματα

createCDATASection

Πώς να δημιουργήσουμε έναν κόμβο CDATASection.

<html>

<body>

<script type="text/vbscript">

set xmlDoc=CreateObject("Microsoft.XMLDOM")

xmlDoc.async="false"

xmlDoc.load("note.xml")

document.write("The original XML : ")

document.write("<xmp>" & xmlDoc.xml & "</xmp>")

set newnode=xmldoc.createCDATASection("This is a CDATASection node")

xmldoc.documentElement.appendchild(newnode)

document.write("After appending the new node : ")

document.write("<xmp>" & xmlDoc.xml & "</xmp>")

</script>

</body>

</html>

 

Το Αντικείμενο CDATASection

Το αντικείμενο CDATASection παριστάνει τους κόμβους CDATASection σ’ ένα έγγραφο (document). Ο κόμβος CDATASection χρησιμοποιείται για να απομονώνουμε κομμάτια κειμένου τα οποία κανονικά θα αναγνωρίζονταν σαν σήμανση (markup).

 

DOM – Το Αντικείμενο Comment

Ας ρίξουμε μια ματιά στο XML αρχείο που έχουμε χρησιμοποιήσει στα παραδείγματα : note.xml.

<?xml version="1.0"?>

<note time="12:03:46">

<to>Tove</to>

<from>Jani</from>

<heading>Reminder</heading>

<body>Don't forget me this weekend!</body>

</note>

 

Παραδείγματα

createComment

Πώς να δημιουργήσουμε έναν κόμβο σχολίου (comment node).

<html>

<body>

<script type="text/vbscript">

set xmlDoc=CreateObject("Microsoft.XMLDOM")

xmlDoc.async="false"

xmlDoc.load("note.xml")

document.write("The original XML : ")

document.write("<xmp>" & xmlDoc.xml & "</xmp>")

set newnode=xmldoc.createComment("This is a comment node")

xmldoc.documentElement.appendchild(newnode)

document.write("After appending the new node : ")

document.write("<xmp>" & xmlDoc.xml & "</xmp>")

</script>

</body>

</html>

 

Το Αντικείμενο Comment

Το αντικείμενο comment παριστάνει τους κόμβους σχολίων (comment nodes) σ’ έναν έγγραφο (document). Οι κόμβοι σχολίων δεν έχουν nodeName, αλλά το nodeValue τους είναι το κείμενο του σχολίου (comment text).

 

back.gif (9867 bytes)

Επιστροφή