Výukový program XML

XML HOME Úvod do XML XML Jak používat XML strom Syntaxe XML Prvky XML Atributy XML Jmenné prostory XML Zobrazení XML XML HttpRequest XML Parser XML DOM XML XPath XML XSLT XML XQuery XML XLlink XML Validator XML DTD Schéma XML XML server Příklady XML XML kvíz XML certifikát

XML AJAX

Úvod do AJAX AJAX XMLHttp Požadavek AJAX Odpověď AJAX Soubor XML AJAX AJAX PHP AJAX ASP Databáze AJAX Aplikace AJAX Příklady AJAX

XML DOM

Úvod do DOM DOM uzly Přístup k DOM Informace o uzlu DOM Seznam uzlů DOM DOM Traversing Navigace DOM DOM získat hodnoty DOM změnit uzly DOM Remove Nodes DOM nahradit uzly DOM Vytvořte uzly DOM Přidat uzly Klonovací uzly DOM Příklady DOM

Výukový program XPath

Úvod do XPath Uzly XPath Syntaxe XPath osy XPath Operátoři XPath Příklady XPath

Kurz XSLT

Úvod do XSLT Jazyky XSL Transformace XSLT XSLT <šablona> XSLT <hodnota-of> XSLT <pro každého> XSLT <sort> XSLT <if> XSLT <vyberte> Použít XSLT XSLT u klienta XSLT na serveru XSLT Úprava XML Příklady XSLT

Výukový program XQuery

Úvod do XQuery Příklad XQuery XQuery FLWOR HTML XQuery Podmínky XQuery Syntaxe XQuery Přidat XQuery XQuery Select Funkce XQuery

XML DTD

Úvod do DTD Stavební bloky DTD DTD prvky Atributy DTD DTD Elements vs Attr DTD entity Příklady DTD

XSD schéma

Úvod do XSD XSD Jak na to XSD <schéma> XSD prvky XSD atributy Omezení XSD

XSD komplex

XSD prvky XSD Prázdné Pouze prvky XSD Pouze text XSD XSD smíšené XSD indikátory XSD <libovolné> XSD <jakýkoliAtribut> Náhrada XSD Příklad XSD

XSD data

XSD řetězec Datum XSD Číselné XSD XSD Různé XSD reference

Webové služby

Služby XML XML WSDL XML SOAP XML RDF XML RSS

Reference

Typy uzlů DOM Uzel DOM DOM NodeList DOM NamedNodeMap Dokument DOM Prvek DOM Atribut DOM Text DOM DOM CDATA Komentář DOM DOM XMLHttpRequest DOM Parser Prvky XSLT Funkce XSLT/XPath

XML DOM - Navigační uzly


Uzly lze procházet pomocí vztahů uzlů.

×

Header


Navigace v uzlech DOM

Přístup k uzlům ve stromu uzlů prostřednictvím vztahu mezi uzly se často nazývá „navigační uzly“.

V XML DOM jsou vztahy uzlů definovány jako vlastnosti uzlů:

  • parentNode
  • childNodes
  • první dítě
  • poslední dítě
  • dalšíSourozenec
  • předchozíSourozenec

Následující obrázek ilustruje část stromu uzlů a vztah mezi uzly v books.xml :

Strom uzlů


DOM - Parent Node

Všechny uzly mají právě jeden nadřazený uzel. Následující kód přejde do nadřazeného uzlu <book>:

Příklad

function myFunction(xml) {
var xmlDoc = xml.responseXML;
    var x = xmlDoc.getElementsByTagName("book")[0];
    document.getElementById("demo").innerHTML = x.parentNode.nodeName;
}

Vysvětlený příklad:

  1. Načtěte " books.xml " do xmlDoc
  2. Získejte první prvek <book>
  3. Zadejte název uzlu nadřazeného uzlu "x"


Vyhněte se prázdným textovým uzlům

Firefox a některé další prohlížeče budou zacházet s prázdnými mezerami nebo novými řádky jako s textovými uzly, Internet Explorer nikoli.

To způsobuje problém při použití vlastností: firstChild, lastChild, nextSibling, previousSibling.

Abychom se vyhnuli navigaci na prázdné textové uzly (mezery a znaky nového řádku mezi uzly prvků), používáme funkci, která kontroluje typ uzlu:

function get_nextSibling(n) {
    var y = n.nextSibling;
    while (y.nodeType! = 1) {
        y = y.nextSibling;
    }
    return y;
}

Výše uvedená funkce vám umožňuje použít get_nextSibling( node ) místo vlastnosti node .nextSibling.

Vysvětlení kódu:

Uzly prvku jsou typu 1. Pokud sourozenecký uzel není uzel prvku, přesune se k dalším uzlům, dokud se uzel prvku nenajde. Tímto způsobem bude výsledek stejný v Internet Exploreru i Firefoxu.


Získejte první dětský prvek

Následující kód zobrazuje uzel prvního prvku první <knihy>:

Příklad

<!DOCTYPE html>
<html>
<body>

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

<script>
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
        myFunction(this);
    }
};
xhttp.open("GET", "books.xml", true);
xhttp.send();

function myFunction(xml) {
    var xmlDoc = xml.responseXML;
    var x = get_firstChild(xmlDoc.getElementsByTagName("book")[0]);
    document.getElementById("demo").innerHTML = x.nodeName;
}

//check if the first node is an element node
function get_firstChild(n) {
    var y = n.firstChild;
    while (y.nodeType != 1) {
        y = y.nextSibling;
    }
    return y;
}
</script>

</body>
</html>

Výstup:

title

Vysvětlený příklad:

  1. Načtěte " books.xml " do xmlDoc
  2. Pomocí funkce get_firstChild na prvním uzlu prvku <book> získáte první podřízený uzel, který je uzlem prvku
  3. Zadejte název uzlu prvního podřízeného uzlu, který je uzlem prvku

Další příklady


Tento příklad používá metodu lastChild() a vlastní funkci k získání posledního podřízeného uzlu uzlu.


Tento příklad používá metodu nextSibling() a vlastní funkci k získání dalšího sourozeneckého uzlu uzlu.


Tento příklad používá metodu previousSibling() a vlastní funkci k získání předchozího sourozeneckého uzlu uzlu.