aboutsummaryrefslogtreecommitdiff
path: root/files/pl/sax/index.html
diff options
context:
space:
mode:
Diffstat (limited to 'files/pl/sax/index.html')
-rw-r--r--files/pl/sax/index.html110
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&lt;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) &amp;&amp;
+  !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("&lt;f:a xmlns:f='g' d='1'&gt;&lt;BBQ/&gt;&lt;/f:a&gt;", "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>