[ Pobierz całość w formacie PDF ]
.Właściwość readyState zdarzenia onreadystatechange informuje o bieżącym stanie dokumentu.Oto przykład pokazujący, jak to działa:<HTML><HEAD><TITLE>Obsługa zdarzeń ładowania dokumentu</TITLE><SCRIPT LANGUAGE="JavaScript">var xmldocfunction loadDocument(){xmldoc = new ActiveXObject("microsoft.XMLDOM")xmldoc.ondataavailable = dataAvailableHandlerxmldoc.onreadystatechange = stateChangeHandlerxmldoc.load('spotkania.xml')}function dataAvailableHandler(){messageDIV.innerHTML += "Stan: dane niedostępne.<BR>"}function stateChangeHandler(){switch (xmldoc.readyState){case 1:messageDIV.innerHTML +="Stan: dane nie zainicjalizowane.<BR>"breakcase 2:messageDIV.innerHTML += "Stan: ładowanie danych.<BR>"breakcase 3:messageDIV.innerHTML += "Stan: dane załadowane.<BR>"breakcase 4:messageDIV.innerHTML +="Stan: zakończono ładowanie danych.<BR>"if (xmldoc.parseError.errorCode != 0) {messageDIV.innerHTML += "Stan: błąd.<BR>"}else {messageDIV.innerHTML +="Stan: dane załadowano poprawnie.<BR>"}break}}</SCRIPT></HEAD><BODY><CENTER><H1>Obsługa zdarzeń ładowania dokumentu</H1></CENTER><CENTER><INPUT TYPE="BUTTON" VALUE="Załaduj dokument"ONCLICK="loadDocument()"></CENTER><DIV ID="messageDIV"></DIV></BODY></HTML>Wynikiem jest strona pokazana na rysunku 5.8 - widać kolejne etapy ładowania dokumentu na stronę.Rysunek 5.8.Monitorowanie zdarzeń ładowania dokumentu XML do Internet ExploreraWalidacja dokumentów XML w Internet ExplorerzeDomyślnie Internet Explorer podczas ładowania dokumentu XML automatycznie go waliduje, ale jeśli nie sprawdzisz ustawień obiektu parseError, błędów walidacji nie zobaczysz.Włączanie i wyłączanie walidacjiWalidację dokumentu można włączać i wyłączać stosując właściwość validateOnParse obiektu document; jej wartość domyślna to true.Oto przykład: ładujemy dokument XML error.xml.Dokument ten nie daje się walidować, gdyż element IMIĘNAZWISKO zadeklarowano jako zawierający jedynie element IMIĘ:<?xml version="1.0" encoding="iso-8859-2" standalone="yes"?><!DOCTYPE DOKUMENT [<!ELEMENT DOKUMENT (KLIENT)*><!ELEMENT KLIENT (IMIĘNAZWISKO,DATA,ZAMÓWIENIA)><!ELEMENT IMIĘNAZWISKO (IMIĘ)><!ELEMENT NAZWISKO (#PCDATA)><!ELEMENT IMIĘ (#PCDATA)><!ELEMENT DATA (#PCDATA)><!ELEMENT ZAMÓWIENIA (POZYCJA)*><!ELEMENT POZYCJA (PRODUKT,ILOŚĆ,CENA)><!ELEMENT PRODUKT (#PCDATA)><!ELEMENT ILOŚĆ (#PCDATA)><!ELEMENT CENA (#PCDATA)>]><DOKUMENT><KLIENT><IMIĘNAZWISKO><NAZWISKO>Smith</NAZWISKO><IMIĘ>Sam</IMIĘ></IMIĘNAZWISKO><DATA>15 paĽdziernika 2001</DATA><ZAMÓWIENIA><POZYCJA><PRODUKT>Pomidory</PRODUKT><ILOŚĆ>8</ILOŚĆ><CENA>5zł</CENA></POZYCJA><POZYCJA><PRODUKT>Pomarańcze</PRODUKT><ILOŚĆ>24</ILOŚĆ><CENA>9.98zł</CENA></POZYCJA></ZAMÓWIENIA></KLIENT></DOKUMENT>Oto strona, która odczytuje i sprawdza dokument - do analizy przyczyny błędu używamy właściwości errorCode, url, line, linepos, errorString i reason obiektu parseError:<HTML><HEAD><TITLE>Walidacja dokumentów</TITLE><SCRIPT LANGUAGE="JavaScript">var xmldocfunction loadDocument(){xmldoc = new ActiveXObject("microsoft.XMLDOM")xmldoc.onreadystatechange = stateChangeHandlerxmldoc.ondataavailable = dataAvailableHandlerxmldoc.load('error.xml')}function dataAvailableHandler(){messageDIV.innerHTML += "Stan: dane dostępne.<BR>"}function stateChangeHandler(){if(xmldoc.readyState == 4) {var errorString = xmldoc.parseError.srcTexterrorString =xmldoc.parseError.srcText.replace(/\</g, "&lt;")errorString = errorString.replace(/\>/g, "&gt;")if (xmldoc.parseError.errorCode != 0) {messageDIV.innerHTML = "Problem z " +xmldoc.parseError.url +" wiersz " + xmldoc.parseError.line +" pozycja " +xmldoc.parseError.linepos +":<BR>Źródło błędu: " + errorString +"<BR>" + xmldoc.parseError.reason +"<BR>" + "Błąd: " +xmldoc.parseError.errorCode}else {messageDIV.innerHTML ="Stan: załadowany dokument jest poprawny [ Pobierz całość w formacie PDF ]
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • centka.pev.pl
  •