XML- tutoriaal

XML TUIS XML Inleiding XML Hoe om te gebruik XML-boom XML-sintaksis XML elemente XML-kenmerke XML Naamruimtes XML vertoon XML HttpRequest XML-ontleder XML DOM XML XPath XML XSLT XML XQuery XML XLink XML valideerder XML DTD XML-skema XML-bediener XML voorbeelde XML Vasvra XML-sertifikaat

XML AJAX

AJAX Inleiding AJAX XMLHttp AJAX-versoek AJAX-reaksie AJAX XML-lêer AJAX PHP AJAX ASP AJAX-databasis AJAX toepassings AJAX voorbeelde

XML DOM

DOM Inleiding DOM nodusse Toegang tot DOM DOM Node Info DOM Node Lys DOM deurkruis DOM Navigeer DOM Kry waardes DOM Verander nodusse DOM Verwyder nodes DOM vervang nodusse DOM Skep nodusse DOM Voeg nodes by DOM Kloon nodusse DOM Voorbeelde

XPath handleiding

XPath Inleiding XPath nodes XPath-sintaksis XPath-asse XPath-operateurs XPath voorbeelde

XSLT- tutoriaal

XSLT Inleiding XSL-tale XSLT-transformasie XSLT <sjabloon> XSLT <waarde-van> XSLT <vir-elk> XSLT <sorteer> XSLT <if> XSLT <kies> XSLT Pas toe XSLT op die kliënt XSLT op die bediener XSLT Wysig XML XSLT voorbeelde

XQuery- tutoriaal

XQuery Inleiding XQuery voorbeeld XQuery FLWOR XQuery HTML XQuery-bepalings XQuery-sintaksis XQuery Voeg by XQuery Kies XQuery-funksies

XML DTD

DTD Inleiding DTD Boublokke DTD Elemente DTD-kenmerke DTD Elements vs Attr DTD Entiteite DTD voorbeelde

XSD- skema

XSD Inleiding XSD Hoe om XSD <skema> XSD-elemente XSD-kenmerke XSD-beperkings

XSD -kompleks

XSD-elemente XSD leeg Slegs XSD-elemente Slegs XSD-teks XSD gemeng XSD-aanwysers XSD <enige> XSD <anyAttribute> XSD-vervanging XSD voorbeeld

XSD data

XSD-string XSD datum XSD Numeries XSD Diverse XSD-verwysing

Webdienste _

XML Dienste XML WSDL XML SEEP XML RDF XML RSS

Verwysings

DOM Node Tipes DOM Node DOM NodeLys DOM NamedNodeMap DOM-dokument DOM Element DOM-kenmerk DOM teks DOM CDATA DOM Kommentaar DOM XMLHttpRequest DOM-ontleder XSLT-elemente XSLT/XPath-funksies

XML DOM Traverse Node Tree


Deurkruis beteken om deur die nodusboom te loop of oor die knoopboom te beweeg.


Deur die Node-boom

Dikwels wil jy 'n XML-dokument lus maak, byvoorbeeld: wanneer jy die waarde van elke element wil onttrek.

Dit word genoem "Die knoopboom deurkruis"

Die voorbeeld hieronder loop deur alle kindernodusse van <boek>, en vertoon hul name en waardes:

Voorbeeld

<!DOCTYPE html>
<html>
<body>

<p id="demo"></p>

<script>
var x, i ,xmlDoc;
var txt = "";
var text = "<book>" +
"<title>Everyday Italian</title>" +
"<author>Giada De Laurentiis</author>" +
"<year>2005</year>" +
"</book>";

parser = new DOMParser();
xmlDoc = parser.parseFromString(text,"text/xml");

// documentElement always represents the root node
x = xmlDoc.documentElement.childNodes;
for (i = 0; i < x.length ;i++) {
    txt += x[i].nodeName + ": " + x[i].childNodes[0].nodeValue + "<br>";
}
document.getElementById("demo").innerHTML = txt;
</script>

</body>
</html>

Uitset:

title: Everyday Italian
author: Giada De Laurentiis
year: 2005

Voorbeeld verduidelik:

  1. Laai die XML-string in xmlDoc
  2. Kry die kind nodusse van die wortel element
  3. Vir elke kindnodus, voer die nodusnaam en die noduswaarde van die teksnodus uit


Blaaierverskille in DOM-ontleding

Alle moderne blaaiers ondersteun die W3C DOM-spesifikasie.

Daar is egter 'n paar verskille tussen blaaiers. Een belangrike verskil is:

  • Die manier waarop hulle wit spasies en nuwe lyne hanteer

DOM - Wit spasies en nuwe lyne

XML bevat dikwels nuwe lyn, of wit spasie karakters, tussen nodusse. Dit is dikwels die geval wanneer die dokument deur 'n eenvoudige redigeerder soos Notepad geredigeer word.

Die volgende voorbeeld (geredigeer deur Notepad) bevat CR/LF (nuwe reël) tussen elke reël en twee spasies voor elke kindnodus:

<book>
  <title>Everyday Italian</title>
  <author>Giada De Laurentiis</author>
  <year>2005</year>
  <price>30.00</price>
</book>

Internet Explorer 9 en vroeër behandel NIE leë wit spasies of nuwe reëls as teksnodes nie, terwyl ander blaaiers dit doen.

Die volgende voorbeeld sal die aantal kind nodusse afvoer wat die wortelelement (van books.xml ) het. IE9 en vroeër sal 4 kind nodusse uitvoer, terwyl IE10 en later weergawes, en ander blaaiers 9 kinder nodusse sal uitvoer:

Voorbeeld

function myFunction(xml) {
var xmlDoc = xml.responseXML;
    x = xmlDoc.documentElement.childNodes;
    document.getElementById("demo").innerHTML =
    "Number of child nodes: " + x.length;
}

PCDATA - Ontleed karakterdata

XML-ontleders ontleed gewoonlik al die teks in 'n XML-dokument.

Wanneer 'n XML-element ontleed word, word die teks tussen die XML-merkers ook ontleed:

<message>This text is also parsed</message>

Die ontleder doen dit omdat XML-elemente ander elemente kan bevat, soos in hierdie voorbeeld, waar die <naam>-element twee ander elemente (eerste en laaste) bevat:

<name><first>Bill</first><last>Gates</last></name>

en die ontleder sal dit opbreek in sub-elemente soos hierdie:

<name>
  <first>Bill</first>
  <last>Gates</last>
</name>

Ontledde karakterdata (PCDATA) is 'n term wat gebruik word oor teksdata wat deur die XML-ontleder ontleed sal word.


CDATA - (Ongeparseerde) Karakterdata

Die term CDATA word gebruik oor teksdata wat nie deur die XML-ontleder ontleed moet word nie.

Karakters soos "<" en "&" is onwettig in XML-elemente.

"<" sal 'n fout genereer omdat die ontleder dit interpreteer as die begin van 'n nuwe element.

"&" sal 'n fout genereer omdat die ontleder dit interpreteer as die begin van 'n karakterentiteit.

Sommige teks, soos JavaScript-kode, bevat baie "<" of "&" karakters. Om foute te vermy, kan script-kode as CDATA gedefinieer word.

Alles binne 'n CDATA-afdeling word deur die ontleder geïgnoreer.

'n CDATA-afdeling begin met " <![CDATA[ " en eindig met " ]]> ":

<script>
<![CDATA[
function matchwo(a,b) {
    if (a < b && a < 0) {
        return 1;
    } else {
        return 0;
    }
}
]]>
</script>

In die voorbeeld hierbo word alles binne die CDATA-afdeling deur die ontleder geïgnoreer.

Notas oor CDATA-afdelings:

'n CDATA-afdeling kan nie die string "]]> bevat nie. Geneste CDATA-afdelings word nie toegelaat nie.

Die "]]>" wat die einde van die CDATA-afdeling aandui, kan nie spasies of lynbreuke bevat nie.