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