SXML

SXML
Расширение имени файла
.sxml , .scm
Код типаТЕКСТ
Тип форматаязык разметки

SXML — это альтернативный синтаксис для записи XML- данных (точнее, XML Infosets [1] ) в виде S-выражений , чтобы облегчить работу с XML-данными в Lisp и Scheme . Связанный набор инструментов [ which? ] реализует XPath , SAX и XSLT для SXML в Scheme [2] [3] и доступен в реализации GNU Guile этого языка.

Текстовое соответствие между SXML и XML для примера фрагмента XML показано ниже:

XMLSXML
<tag attr1= "value1" attr2= "value2" > <nested> Текстовый узел </nested> <empty/> </tag>     
( тег ( @ ( attr1 "value1" ) ( attr2 "value2" )) ( вложенный "Текстовый узел" ) ( пустой ))        

По сравнению с другими альтернативными представлениями XML и связанными с ним языками, SXML имеет преимущество в том, что его можно напрямую анализировать существующими реализациями Scheme. Связанные с ним инструменты и документация были во многих отношениях высоко оценены Дэвидом Мерцем в его колонке IBM developerWorks, хотя он также критиковал предварительный характер его документации и системы. [4]

Пример

Возьмем следующую простую страницу XHTML :

 < html  xmlns = "http://www.w3.org/1999/xhtml"  xml:lang = "en"  lang = "en" >  < head >  < title > Пример страницы </ title >  </ head >  < body >  < h1  id = "greeting" > Привет, всем! </ h1 >  < p > Это всего лишь " >> пример << " для демонстрации XHTML и SXML. </ p >  </ body >  </ html >

После перевода в SXML эта же страница теперь выглядит так:

 ( *TOP* ( @ ( *NAMESPACES* ( x "http://www.w3.org/1999/xhtml" ))) ( x :html ( @ ( xml:lang " en" ) ( lang "en" )) ( x:head ( x:title "Пример страницы" )) ( x:body ( x:h1 ( @ ( id "greeting" )) "Привет, там" ) ( x:p "Это просто \">>пример<<\" для демонстрации XHTML и SXML." ))))                     

Пара тегов каждого элемента заменяется набором скобок. Имя тега не повторяется в конце, это просто первый символ в списке. Далее следует содержимое элемента, которое является либо самими элементами, либо строками. Для атрибутов XML не требуется специального синтаксиса. В SXML они просто представлены как еще один узел, имеющий специальное имя @. Это не может вызвать конфликт имен с фактическим "@"тегом, поскольку @не допускается в качестве имени тега в XML. Это распространенный шаблон в SXML: всякий раз, когда тег используется для указания особого статуса или чего-то, что невозможно в XML, используется имя, которое не является допустимым идентификатором XML.

В строках SXML есть два символа, которые необходимо экранировать, "разделитель строки (с помощью \") и \сам символ экранирования (с помощью \\). Приведенный выше код XML требует экранирования трех: &, <и >(с помощью &amp;, &lt;и &gt;соответственно).

Ссылки

  1. ^ Киселёв, Олег (2002). «Спецификация SXML». ACM SIGPLAN Notices . 37 (6): 52– 58. doi :10.1145/571727.571736. S2CID  13955814.
  2. ^ Киселёв, Олег; Лисовский, Кирилл (2002). Реализации XML, XPath, XSLT в виде SXML, SXPath и SXSLT (PDF) . Международная конференция по Lisp.
  3. ^ Киселёв, Олег; Кришнамурти, Шрирам (2003). SXSLT: Язык манипулирования XML . Практические аспекты декларативных языков. Конспект лекций по информатике. Том 2562. С.  256–272 . doi :10.1007/3-540-36388-2_18. ISBN 978-3-540-00389-2.
  4. ^ Мерц, Дэвид (23 октября 2003 г.). «XML Matters: Investigating SXML and SSAX». IBM developerWorks . Архивировано из оригинала 4 декабря 2004 г. Получено 10 января 2015 г.
  • Учебное пособие по инструментам SXML от Дмитрия Лизоркина
  • Пакет SXML для Racket
Взято с "https://en.wikipedia.org/w/index.php?title=SXML&oldid=1244434407"