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

Objekt XMLHttpRequest _


Všechny moderní prohlížeče mají vestavěný objekt XMLHttpRequest pro vyžádání dat ze serveru.

Všechny hlavní prohlížeče mají vestavěný analyzátor XML pro přístup a manipulaci s XML.


Objekt XMLHttpRequest

Objekt XMLHttpRequest lze použít k vyžádání dat z webového serveru.

Objekt XMLHttpRequest je snem vývojáře , protože můžete:

  • Aktualizujte webovou stránku bez opětovného načítání stránky
  • Vyžádat si data ze serveru - po načtení stránky
  • Přijímat data ze serveru - po načtení stránky
  • Odesílejte data na server - na pozadí

Příklad XMLHttpRequest

Když do vstupního pole níže zadáte znak, na server se odešle požadavek XMLHttpRequest a vrátí se některé návrhy jmen (ze serveru):

Příklad

Start typing a name in the input field below:

Name:

Suggestions:


Odeslání požadavku XMLHttpRequest

Všechny moderní prohlížeče mají vestavěný objekt XMLHttpRequest.

Běžná syntaxe JavaScriptu pro jeho použití vypadá asi takto:

Příklad

var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
       // Action to be performed when the document is read;
    }
};
xhttp.open("GET", "filename", true);
xhttp.send();

Vytvoření objektu XMLHttpRequest

První řádek ve výše uvedeném příkladu vytváří objekt XMLHttpRequest:

var xhttp = new XMLHttpRequest();

Událost onreadystatechange

Vlastnost readyState uchovává stav XMLHttpRequest.

Událost onreadystatechange se spustí pokaždé, když se readyState změní.

Během požadavku serveru se readyState změní z 0 na 4:

0: požadavek není inicializován
1: připojení k serveru navázáno
2: požadavek přijat
3: zpracování požadavku
4: požadavek dokončen a odpověď je připravena

Ve vlastnosti onreadystatechange zadejte funkci, která se má provést, když se readyState změní:

xhttp.onreadystatechange = function()

Když je readyState 4 a stav 200, odpověď je připravena:

if (this.readyState == 4 && this.status == 200)

Vlastnosti a metody XMLHttpRequest

Method Description
new XMLHttpRequest() Creates a new XMLHttpRequest object
open(method, url, async) Specifies the type of request
method: the type of request: GET or POST
url: the file location
async: true (asynchronous) or false (synchronous)
send() Sends a request to the server (used for GET)
send(string) Sends a request string to the server (used for POST)
onreadystatechange A function to be called when the readyState property changes
readyState The status of the XMLHttpRequest
0: request not initialized
1: server connection established
2: request received
3: processing request
4: request finished and response is ready
status 200: OK
404: Page not found
responseText The response data as a string
responseXML The response data as XML data

Přístup napříč doménami

Moderní prohlížeče z bezpečnostních důvodů neumožňují přístup napříč doménami.

To znamená, že webová stránka i soubor XML, který se pokouší načíst, musí být umístěny na stejném serveru.

Příklady na W3Schools všechny otevřené soubory XML umístěné v doméně W3Schools.

Pokud chcete výše uvedený příklad použít na jedné ze svých vlastních webových stránek, soubory XML, které načtete, musí být umístěny na vašem vlastním serveru.


Vlastnost responseText

Vlastnost responseText vrací odpověď jako řetězec.

Pokud chcete použít odpověď jako textový řetězec, použijte vlastnost responseText:

Příklad

document.getElementById("demo").innerHTML = xmlhttp.responseText;

Vlastnost responseXML

Vlastnost responseXML vrací odpověď jako objekt XML DOM.

Pokud chcete použít odpověď jako objekt XML DOM, použijte vlastnost responseXML:

Příklad

Vyžádejte si soubor cd_catalog.xml a použijte odpověď jako objekt XML DOM:

xmlDoc = xmlhttp.responseXML;
txt = "";
x = xmlDoc.getElementsByTagName("ARTIST");
for (i = 0; i < x.length; i++) {
    txt += x[i].childNodes[0].nodeValue + "<br>";
}
document.getElementById("demo").innerHTML = txt;

GET nebo POST?

GET je jednodušší a rychlejší než POST a lze jej použít ve většině případů.

Požadavky POST však vždy používejte, když:

  • Soubor v mezipaměti není možnost (aktualizace souboru nebo databáze na serveru)
  • Odesílání velkého množství dat na server (POST nemá žádná omezení velikosti)
  • Odesílání uživatelského vstupu (který může obsahovat neznámé znaky), POST je robustnější a bezpečnější než GET

Adresa URL – Soubor na serveru

Parametr url metody open() je adresa souboru na serveru:

xmlhttp.open("GET", "xmlhttp_info.txt", true);

Soubor může být libovolný soubor, například .txt a .xml, nebo serverové skriptovací soubory jako .asp a .php (které mohou provádět akce na serveru před odesláním odpovědi zpět).


Asynchronní – pravda nebo ne?

Chcete-li odeslat požadavek asynchronně, parametr async metody open() musí být nastaven na hodnotu true:

xmlhttp.open("GET", "xmlhttp_info.txt", true);

Asynchronní odesílání požadavků je pro webové vývojáře velkým zlepšením. Mnoho úloh prováděných na serveru je časově velmi náročných.

Při asynchronním odesílání nemusí JavaScript čekat na odpověď serveru, ale může:

  • spouštět další skripty při čekání na odpověď serveru
  • zabývat se odpovědí, když je odpověď připravena

Async = pravda

Při použití async = true zadejte funkci, která se má provést, když je odpověď připravena v události onreadystatechange:

Příklad

xmlhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
       document.getElementById("demo").innerHTML = this.responseText;
    }
};
xmlhttp.open("GET", "xmlhttp_info.txt", true);
xmlhttp.send();

Async = nepravda

Chcete-li použít async = false, změňte třetí parametr v metodě open() na hodnotu false:

xmlhttp.open("GET", "xmlhttp_info.txt", false);

Použití async = false se nedoporučuje, ale pro několik malých požadavků to může být v pořádku.

Pamatujte, že JavaScript NEBUDE pokračovat v provádění, dokud nebude připravena odpověď serveru. Pokud je server zaneprázdněn nebo pomalý, aplikace přestane reagovat nebo se zastaví.

Poznámka: Když použijete async = false, NEPIŠTE funkci onreadystatechange – pouze vložte kód za příkaz send():

Příklad

xmlhttp.open("GET", "xmlhttp_info.txt", false);
xmlhttp.send();
document.getElementById("demo").innerHTML = xmlhttp.responseText;

XML Parser

Všechny moderní prohlížeče mají vestavěný XML parser.

Objektový model dokumentu XML (XML DOM) obsahuje mnoho metod pro přístup a úpravu XML.

Než však bude možné přistupovat k dokumentu XML, musí být načten do objektu XML DOM.

Analyzátor XML může číst prostý text a převádět jej na objekt XML DOM.


Analýza textového řetězce

Tento příklad analyzuje textový řetězec do objektu XML DOM a extrahuje z něj informace pomocí JavaScriptu:

Příklad

<html>
<body>

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

<script>
var text, parser, xmlDoc;

text = "<bookstore><book>" +
"<title>Everyday Italian</title>" +
"<author>Giada De Laurentiis</author>" +
"<year>2005</year>" +
"</book></bookstore>";

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

document.getElementById("demo").innerHTML =
xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue;
</script>

</body>
</html>

Staré prohlížeče (IE5 a IE6)

Staré verze aplikace Internet Explorer (IE5 a IE6) nepodporují objekt XMLHttpRequest.

Chcete-li zpracovat IE5 a IE6, zkontrolujte, zda prohlížeč podporuje objekt XMLHttpRequest, nebo vytvořte ActiveXObject:

Příklad

if (window.XMLHttpRequest) {
    // code for modern browsers
    xmlhttp = new XMLHttpRequest();
 } else {
    // code for old IE browsers
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}

Staré verze Internet Exploreru (IE5 a IE6) nepodporují objekt DOMParser.

Chcete-li pracovat s IE5 a IE6, zkontrolujte, zda prohlížeč podporuje objekt DOMParser, nebo vytvořte ActiveXObject:

Příklad

if (window.DOMParser) {
  // code for modern browsers
  parser = new DOMParser();
  xmlDoc = parser.parseFromString(text,"text/xml");
} else {
  // code for old IE browsers
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
  xmlDoc.async = false;
  xmlDoc.loadXML(text);

Další příklady


informací záhlaví zdroje (souboru).


Načtení konkrétních informací záhlaví zdroje (souboru).


Jak může webová stránka komunikovat s webovým serverem, zatímco uživatel zadává znaky do vstupního pole.


Jak může webová stránka načíst informace z databáze pomocí objektu XMLHttpRequest.


Vytvořte požadavek XMLHttpRequest pro načtení dat ze souboru XML a zobrazení dat v tabulce HTML.