SXML - SXML

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

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

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

XMLSXML
<тег attr1 ="значение1"     attr2 ="значение2">  <nested>Текстовый узел</nested>  <empty/></tag>
(тег (@ (attr1 "значение1")        (attr2 "значение2"))  (вложенный «Текстовый узел»)  (пустой))

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

Пример

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

 <html xmlns="http://www.w3.org/1999/xhtml"         xml: lang="en" язык="en">    <голова>       <заглавие>Пример страницы</заглавие>    </голова>    <тело>       <h1 я бы="приветствие">Всем привет!</h1>       <п>Это просто & gt; & gt;пример& lt; & lt; показать XHTML & amp; SXML.</п>    </тело> </html>

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

 (*ВЕРХ* (@ (* НАЗВАНИЯ * (Икс "http://www.w3.org/1999/xhtml")))  (x: html (@ (xml: lang "en") (язык "en"))    (x: голова       (x: название "Пример страницы"))    (x: тело       (х: h1 (@ (я бы "приветствие")) "Всем привет")       (х: р  «Это всего лишь >> пример << для демонстрации XHTML и SXML».))))

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

Мы также можем видеть, что нет необходимости «экранировать» значимые символы, такие как & и> как & amp; и & gt; сущности. Все строковое содержимое автоматически экранируется, потому что оно считается чистым содержимым и не содержит тегов или сущностей. Это также означает, что намного проще вставлять автоматически сгенерированный контент и что нет опасности, что мы можем забыть избежать ввода пользователя, когда мы показываем его другим пользователям (что может привести ко всем видам межсайтовый скриптинг атаки или другие неприятности развития).

Рекомендации

  1. ^ Киселев, Олег (2002). «Спецификация SXML». Уведомления ACM SIGPLAN. 37 (6): 52–58. Дои:10.1145/571727.571736.
  2. ^ Киселев Олег; Лисовский, Кирилл (2002). Реализации XML, XPath, XSLT как SXML, SXPath и SXSLT (PDF). Международная конференция Lisp.
  3. ^ Киселев Олег; Кришнамурти, Шрирам (2003). SXSLT: язык манипуляции для XML. Практические аспекты декларативных языков. Конспект лекций по информатике. 2562. С. 256–272. Дои:10.1007/3-540-36388-2_18. ISBN  978-3-540-00389-2.
  4. ^ Мерц, Дэвид (23 октября 2003 г.). «Вопросы XML: исследование SXML и SSAX». IBM developerWorks. Архивировано из оригинал 4 декабря 2004 г.. Получено 10 января 2015.

внешняя ссылка