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 procházet strom uzlu


Procházení znamená procházení nebo cestování napříč stromem uzlů.


Procházení stromem uzlů

Často chcete zacyklit dokument XML, například: když chcete extrahovat hodnotu každého prvku.

Toto se nazývá „Procházení stromem uzlů“

Níže uvedený příklad prochází všechny podřízené uzly <book> a zobrazuje jejich názvy a hodnoty:

Příklad

<!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>

Výstup:

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

Vysvětlený příklad:

  1. Načtěte řetězec XML do xmlDoc
  2. Získejte podřízené uzly kořenového prvku
  3. Pro každý podřízený uzel zadejte název uzlu a hodnotu uzlu textového uzlu


Rozdíly v prohlížeči v analýze DOM

Všechny moderní prohlížeče podporují specifikaci W3C DOM.

Mezi prohlížeči však existují určité rozdíly. Jeden důležitý rozdíl je:

  • Způsob, jakým zvládají prázdná místa a nové řádky

DOM - Bílá místa a nové řádky

XML často obsahuje nové řádky nebo mezery mezi uzly. To je často případ, kdy je dokument upravován jednoduchým editorem, jako je Poznámkový blok.

Následující příklad (upravený programem Poznámkový blok) obsahuje CR/LF (nový řádek) mezi každým řádkem a dvěma mezerami před každým podřízeným uzlem:

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

Internet Explorer 9 a starší NEZACHÁZEJÍ prázdná bílá místa nebo nové řádky jako textové uzly, zatímco jiné prohlížeče to dělají.

Následující příklad vypíše počet podřízených uzlů, které má kořenový prvek ( knihy.xml ). IE9 a starší budou mít výstup 4 podřízených uzlů, zatímco IE10 a novější verze a další prohlížeče budou mít výstup 9 podřízených uzlů:

Příklad

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

PCDATA – analyzovaná znaková data

Analyzátory XML obvykle analyzují veškerý text v dokumentu XML.

Když je analyzován prvek XML, je analyzován také text mezi značkami XML:

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

Analyzátor to dělá, protože prvky XML mohou obsahovat další prvky, jako v tomto příkladu, kde prvek <name> obsahuje dva další prvky (první a poslední):

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

a analyzátor jej rozdělí na dílčí prvky, jako je tento:

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

Parsed Character Data (PCDATA) je termín používaný pro textová data, která budou analyzována analyzátorem XML.


CDATA - (neanalyzovaná) znaková data

Termín CDATA se používá pro textová data, která by neměla být analyzována analyzátorem XML.

Znaky jako "<" a "&" jsou v prvcích XML nezákonné.

"<" vygeneruje chybu, protože ji analyzátor interpretuje jako začátek nového prvku.

"&" vygeneruje chybu, protože ji analyzátor interpretuje jako začátek znakové entity.

Některý text, například kód JavaScript, obsahuje mnoho znaků „<“ nebo „&“. Aby se předešlo chybám, může být kód skriptu definován jako CDATA.

Vše v sekci CDATA je analyzátorem ignorováno.

Sekce CDATA začíná " <![CDATA[ " a končí " ]]> ":

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

Ve výše uvedeném příkladu je vše uvnitř sekce CDATA analyzátorem ignorováno.

Poznámky k oddílům CDATA:

Sekce CDATA nemůže obsahovat řetězec "]]>". Vnořené sekce CDATA nejsou povoleny.

"]]>", které označuje konec oddílu CDATA, nemůže obsahovat mezery ani zalomení řádků.