# Simple API for XML

### Матеріал з Вікіпедії — вільної енциклопедії.

Simple API for XML (англ. Простий програмний інтерфейс для роботи з XML, скорочено SAX) — специфікація прикладного програмного інтерфейсу для послідовного отримання даних із структурованих XML документів. Цей інтерфейс є поширеною альтернативою Document Object Model (DOM).

Аналізатор, який реалізує інтерфейс SAX (англ. SAX Parser) обробляє інформацію із XML документа як єдиний потік даних. Цей потік даних доступний лише в одному напрямі, тобто, раніш оброблені дані неможливо повторно прочитати без повторного аналізу.

Більшість програмістів XML технологій вважають, що обробка XML документів відповідно парадигмі SAX, в цілому, швидша, аніж при використанні DOM. Це пояснюється тим, що потік SAX потребує набагато меншого об'єму пам'яті у порівнянні із побудовою повного дерева DOM.

SAX аналізатори реалізують з використанням підходу передачі повідомлень (event-driven), коли програмісту необхідно описати обробники подій (en:Callback (computer science)), які викликаються аналізаторами під час обробки XML документа.

SAX було розроблено зусиллями спільноти списку розсилки xml-dev, без формальних комітетів, але він був швидко визнаний компаніями, які спеціалізуються на засобах обробки XML документів. Першим головним розробником та інженером супроводу був Давід Маггінсон.

## [ред.] Приклад роботи

Розглянемо принципи роботи використовуючи наступний документ в якості прикладу:

    <?xml version="1.0" encoding="UTF-8"?>
    <greeting>
      <type age="20">Привіт</type>
      <?mark SAMPLE ?>
    </greeting>

SAX аналізатор, обробляючи цей документ, генеруватиме події та надсилатиме їх на відомі йому обробники подій в такій послідовності:

1. `startDocument()`
2. `startElement("greeting")`
3. `ignorableWhitespace(новий рядок та " ")`
4. `startElement("type", з атрибутом "age")`
5. `character("Привіт")`
6. `endElement("type")`
7. `ignorableWhitespace(новий рядок та " ")`
8. `processingInstruction("mark", "SAMPLE")`
9. `ignorableWhitespace(новий рядок)`
10. `endElement("greeting")`
11. `endDocument()`

Послідовність цих подій можна розглядати як вхідні символи скінченного автомату, та будувати алгоритм переробки даних XML відповідним чином. Цей автомат, в свою чергу, також може генерувати SAX події (як вихідні символи автомату), та повідомляти про них далі по ланцюгу переробки даних.

## [ред.] Дивіться також

### [ред.] Інші технології обробки XML документів

- Document Object Model
- XSL Transformations (XSLT)
- Streaming Transformations for XML (STX)
- System Integrated Automaton parser

### [ред.] XML аналізатори та API які підтримують SAX

- Xerces
- MSXML
- Crimson XML
- JAXP: Java API for XML Processing

## [ред.] Джерела інформації

- Simple API for XML — стаття в англомовній вікіпедії.
- Simple API for XML — стаття в німецькомовній вікіпедії.
- David Brownell: SAX2, O'Reilly, ISBN 0-596-00237-8
- W. Scott Means, Michael A. Bodie: The Book of SAX, No Starch Press, ISBN 1-886411-77-8

## [ред.] Зовнішні посилання

- SAX homepage
- Top Ten SAX2 Tips

- Інтерфейси SAX для...
  - Python
  - Java

Отримано з http://uk.wikipedia.org../../../s/i/m/Simple_API_for_XML_6b72.html

Категорії: Веб-технології | Програмування | XML

##### Views

- Стаття
- Обговорення
- Поточна версія

##### Участь

- Портал спільноти
- Кнайпа
- Довідка
- Пожертвування

##### Пошук

##### Іншими мовами

- Česky
- Deutsch
- English
- Español
- فارسی
- Français
- עברית
- Italiano
- 日本語
- 한국어
- Nederlands
- Русский
- ไทย
- Tiếng Việt