diff options
Diffstat (limited to 'files/pl/sax/index.html')
| -rw-r--r-- | files/pl/sax/index.html | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/files/pl/sax/index.html b/files/pl/sax/index.html new file mode 100644 index 0000000000..ec8b53ed2f --- /dev/null +++ b/files/pl/sax/index.html @@ -0,0 +1,110 @@ +--- +title: SAX +slug: SAX +tags: + - Dodatki + - Rozszerzenia + - Wszystkie_kategorie +translation_of: Archive/SAX +--- +<p> +</p><p><b>SAX</b>, skrót dla <i>Simple API for XML</i>, jest parserem API. Po raz pierwszy SAX został szeroko zadoptowany w API dla XML w Javie i później został zaimplementowany w kilku innych środowiskach programowania. Wraz z <a href="pl/Firefox_2">Firefoksem 2</a>, parser SAX jest dostępny w aplikacjach XUL i rozszerzeniach. Aby zdobyć dodatkowe informacje, odwiedź <a class="external" href="http://www.saxproject.org/">stronę domową SAX</a>. +</p> +<h3 id="Szybki_start"> Szybki start </h3> +<p>Funkcjonalność parsera SAX jest dostępna poprzez interfejs <i>XML reader component</i>. Aby go utworzyć, zastosuj poniższy kod: +</p> +<pre class="eval">var xmlReader = Components.classes["@mozilla.org/saxparser/xmlreader;1"] + .createInstance(Components.interfaces.nsISAXXMLReader); +</pre> +<p>Po utworzeniu parsera SAX, będzie potrzebne ustawienie podprogramów obsługi dla zdarzeń, którymi jesteśmy zainteresowani <b>and fire off the parsing process</b>. Cała funkcjonalnośc jest dostępna poprzez interfejs <a href="https://dxr.mozilla.org/mozilla-central/source/parser/xml/public/nsISAXXMLReader.idl" rel="custom">nsISAXXMLReader</a>. +</p> +<h4 id="Ustawienie_obiektów_obsługi"> Ustawienie obiektów obsługi </h4> +<p>Obiekty obsługi (określone przez użytkownika) są zdefiniowanymi obiektami zaimplementowanymi w programie obsługi interfejsu SAX, które są zależne od rodzaju informacji, jaki chcemy otrzymać z parsera. Po rozpoczęciu procesu parsowania, obiekty obsługi przyjmują szereg wywołań zwrotnych dla treści XML, która jest parsowana. Dostępne są następujące obiekty obsługi: </p> +<table class="fullwidth-table"> +<tbody><tr> <th>Interfejs</th> <th>Zastosowanie</th> +</tr> +<tr> <td><a href="https://dxr.mozilla.org/mozilla-central/source/parser/xml/public/nsISAXContentHandler.idl" rel="custom">nsISAXContentHandler</a></td> <td>Pakiet obiektu obsługuje zawartość logiczną dokumentu (np. elementy, atrybuty, białe znaki oraz instrukcje przetwarzania).</td> +</tr> +<tr> <td><a href="https://dxr.mozilla.org/mozilla-central/source/parser/xml/public/nsISAXDTDHandler.idl" rel="custom">nsISAXDTDHandler</a></td> <td>Pakiet obiektu obsługuje proste podobne do DTD zdarzenia.</td> +</tr> +<tr> <td><a href="https://dxr.mozilla.org/mozilla-central/source/parser/xml/public/nsISAXErrorHandler.idl" rel="custom">nsISAXErrorHandler</a></td> <td>Pakiet obsługi błędów strumienia wejściowego.</td> +</tr> +<tr> <td><a href="https://dxr.mozilla.org/mozilla-central/source/parser/xml/public/nsISAXLexicalHandler.idl" rel="custom">nsISAXLexicalHandler</a></td> <td>Rozszerzenie obiektu SAX2 dla zdarzeń struktur leksykalnych (np. komentarzy i sekcji CDATA, deklaracji DTD oraz encji).</td> +</tr> +</tbody></table> +<p>Przykład implementacji najczęściej stosowanych obiektów obsługi: +</p> +<pre>function print(s) { + dump(s + "\n"); +} + +xmlReader.contentHandler = { + // nsISAXContentHandler + startDocument: function() { + print("startDocument"); + }, + + endDocument: function() { + print("endDocument"); + }, + + startElement: function(uri, localName, qName, /*nsISAXAttributes*/ attributes) { + var attrs = []; + for(var i=0; i<attributes.length; i++) { + attrs.push(attributes.getQName(i) + "='" + + attributes.getValue(i) + "'"); + } + + print("startElement: namespace='" + uri + "', localName='" + + localName + "', qName='" + qName + "', attributes={" + + attrs.join(",") + "}"); + }, + + endElement: function(uri, localName, qName) { + print("endElement: namespace='" + uri + "', localName='" + + localName + "', qName='" + qName + "'"); + }, + + characters: function(value) { + print("characters: " + value); + }, + + processingInstruction: function(target, data) { + print("processingInstruction: target='" + target + "', data='" + + data + "'"); + }, + + ignorableWhitespace: function(whitespace) { + // don't care + }, + + startPrefixMapping: function(prefix, uri) { + // don't care + }, + + endPrefixMapping: function(prefix) { + // don't care + }, + + // nsISupports + QueryInterface: function(iid) { + if(!iid.equals(Components.interfaces.nsISupports) && + !iid.equals(Components.interfaces.nsISAXContentHandler)) + throw Components.results.NS_ERROR_NO_INTERFACE; + return this; + } +}; +</pre> +<h4 id="Rozpoczęcie_parsowania"> Rozpoczęcie parsowania </h4> +<p><i>XML Reader component</i> potrafi parsować XML z łańcucha znakowego, <a href="pl/NsIInputStream">nsIInputStream</a> lub asynchronicznie przez interfejs <a href="pl/NsIStreamListener">nsIStreamListener</a>. Poniżej znajduje się przykład parsowania z łańcucha znakowego: </p> +<pre class="eval">xmlReader.parseFromString("<f:a xmlns:f='g' d='1'><BBQ/></f:a>", "text/xml"); +</pre> +<p>Wywoła to następującym rezultat na wyjściu (biorąc na siebie zawartość obiektu obsługi stosując przykład powyżej): +</p> +<pre>startDocument +startElement: namespace='g', localName='a', qName='f:a', attributes={d='1'} +startElement: namespace='', localName='BBQ', qName='BBQ', attributes={} +endElement: namespace='', localName='BBQ', qName='BBQ' +endElement: namespace='g', localName='a', qName='f:a' +endDocument +</pre> |
