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 документів

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

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

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

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