SXML
Расширение имени файла |
.sxml , .скм |
---|---|
Введите код | ТЕКСТ |
Тип формата | язык разметки |
SXML — это альтернативный синтаксис для записи XML- данных (точнее, XML-информационных наборов). [1] ) как S-выражения , для облегчения работы с XML-данными в Lisp и Scheme . Соответствующий набор инструментов [ который? ] реализует XPath , SAX и XSLT для SXML в схеме [2] [3] и доступны в GNU Guile реализации этого языка .
Текстовое соответствие между SXML и XML для примера фрагмента XML показано ниже:
XML | SXML |
---|---|
<tag attr1="value1"
attr2="value2">
<nested>Text node</nested>
<empty/>
</tag>
|
(tag (@ (attr1 "value1")
(attr2 "value2"))
(nested "Text node")
(empty))
|
По сравнению с другими альтернативными представлениями XML и связанных с ним языков, SXML имеет то преимущество, что его можно напрямую анализировать с помощью существующих реализаций Scheme. Соответствующие инструменты и документация во многом получили высокую оценку Дэвида Мерца в его колонке на IBM DeveloperWorks , хотя он также раскритиковал предварительный характер документации и системы. [4]
Пример
[ редактировать ]Возьмите следующую простую страницу XHTML :
<html xmlns="http://www.w3.org/1999/xhtml"
xml:lang="en" lang="en">
<head>
<title>An example page</title>
</head>
<body>
<h1 id="greeting">Hi, there!</h1>
<p>This is just an ">>example<<" to show 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 "An example page"))
(x:body
(x:h1 (@ (id "greeting")) "Hi, there")
(x:p "This is just an \">>example<<\" to show XHTML & SXML."))))
Пара тегов каждого элемента заменяется набором круглых скобок. Имя тега в конце не повторяется, это просто первый символ в списке. Далее следует содержимое элемента, которое представляет собой либо сами элементы, либо строки. Для атрибутов XML не требуется специального синтаксиса. В SXML они просто представлены как еще один узел, имеющий специальное имя @
. Это не может привести к конфликту имени с фактическим "@"
тег, потому что @
не допускается в качестве имени тега в XML. Это распространенный шаблон в SXML: каждый раз, когда тег используется для обозначения особого статуса или чего-то, что невозможно в XML, используется имя, которое не является допустимым идентификатором XML.
В строках SXML есть два символа, которые необходимо экранировать: "
разделитель строк (с \"
) и \
сам escape-символ (с \\
). Приведенный выше XML-код требует экранирования трех: &
, <
и >
(с &
, <
и >
соответственно).
Ссылки
[ редактировать ]- ^ Киселёв, Олег (2002). «Спецификация SXML». Уведомления ACM SIGPLAN . 37 (6): 52–58. дои : 10.1145/571727.571736 . S2CID 13955814 .
- ^ Киселев Олег; Лисовский, Кирилл (2002). Реализации XML, XPath, XSLT в виде SXML, SXPath и SXSLT (PDF) . Международная конференция по Лиспу.
- ^ Киселев Олег; Кришнамурти, Шрирам (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 г.