[ Russian ] [ English ]

Языки XSLT и XLink: реализация, расширение и интеграция функциональными методами

Д. Лизоркин,
ВМиК МГУ,
lizorkin@hotbox.ru
К.Ю. Лисовский,
Amphora R&D,
klisovsky@ardlab.com

Язык трансформации XML [XML] документов XSLT [XSLT] является одним из наиболее развитых и активно применяемых языков обработки XML данных, предложенных консорциумом W3C. XSLT позволяет описывать преобразования XML документов декларативно и обладает практически всеми свойствами функционального языка высокого уровня [XSLT-IBM], однако разрабатывался как трансформационная компонента XSL и не предназначен для использования в качестве языка программирования общего назначения.

На практике часто используется лишь небольшая ("презентационная") часть возможностей XSLT [ResqXSLT], а для более сложных задач XSLT используется совместно с традиционными языками высокого уровня (такими как Java, C/C++, Python), которые используют принципиально иные вычислительные парадигмы и модели данных. Возникающие при этом проблемы (известные как "несоответствие импеданса") могут быть в значительной мере сняты при использовании для реализации и расширения XSLT функционального языка программирования Scheme [R5RS] и SXML [SXML] - представления XML Information Set в виде S-выражений, которые являются оcновной структурой данных в языке Scheme. .

XML Linking Language [XLink] - это язык описания межресурсных связей при помощи XML-аттрибутов и пространства имен [Namespaces]. Приложения, реализующие язык XLink, способны понимать правильные (well-formed) XML документы, содержащие элементы и атрибуты языка XLink, проверять соглашения о разметке, определяемые спецификацией языка XLink, и производить обработку XLink-ссылок и соединяемых ими ресурсов.

Использование SXML для представления элементов языка XLink позволяет добиться компактности кода и простоты использования по сравнению с объектно-ориентированными реализациями XLink, такими как X2X [X2X] и XLip [XLip]. Функции языка Scheme в качестве объектов первого класса используются как обработчики событий в сложных операциях преобразования связанных с помощью XLink ресурсов, за счет чего повышается универсальность и гибкость процессора XLink связей.

В докладе рассматривается реализация и расширение XSLT и XLink функциональными методами на основе SXML. Рассматриваются возможности интеграции языков XSLT и XLink, такие как XSLT трансформация совокупности XML ресурсов, связанных при помощи SXLink, и использование XSLT в качестве обработчика целевого ресурса для активизируемого XLink-перехода.

Особое внимание уделяется конвергентности предложенных языков и их совместимости со стандартами консорциума W3C.

Литература:

[XML]
Extensible Markup Language (XML) 1.0 (Second Edition).
W3C Recommendation 6 October 2000. http://www.w3.org/TR/REC-xml

[Namespaces]
Namespaces in XML.
World Wide Web Consortium 14-January-1999. http://www.w3.org/TR/REC-xml-names/

[XSLT]
XSL Transformations (XSLT) Version 1.0
W3C Recommendation 16 November 1999. http://www.w3.org/TR/xslt

[XLink]
XML Linking Language (XLink) Version 1.0.
W3C Recommendation 27 June 2001. http://www.w3.org/TR/xlink/

[XPath]
XML Path Language (XPath) Version 1.0.
W3C Recommendation 16 November 1999. http://www.w3.org/TR/xpath

[XPointer]
XML Pointer Language (XPointer) Version 1.0.
W3C Candidate Recommendation 11 September 2001. http://www.w3.org/TR/xptr/

[X2X]
X2X 2.0 Documentation. http://www.empolis.co.uk/x2xdocs2/index.html

[XLip]
XLiP (XLink Processor) User's Guide. http://www.labs.fujitsu.com/free/xlip/en/index.html

[R5RS]
H. Abelson, R. K. Dubving, C. T. Haynes, G. J. Rozas, N. I. Adams IV, D. P. Friedman, E. Kohlbecker, G. L. Sleete Jr., D. H. Bartley, R. Halstead, D. Oxley, G. J. Sussman, G. Brooks, C. Hanson, K. M. Pitman, M. Wand. Revised(5) Report on the Algorithmic Language Scheme.
http://www.swiss.ai.mit.edu/ftpdir/scheme-reports/r5rs-html/r5rs_toc.html

[SXML]
SXML Specification
http://okmij.org/ftp/Scheme/SXML.html

[SXML02]
O. Kiselyov, K. Lisovsky. XML, XPath, XSLT implementations as SXML, SXPath, SXSLT.
International LISP conference. San Francisco, 2002.

[XSLT-IBM]
M.Kay. What kind of language is XSLT?
http://www-106.ibm.com/developerworks/xml/library/x-xslt/

[ResqXSLT]
D. Jacobs. Rescuing XSLT from Niche Status
http://www.xfront.com/rescuing-xslt.html

Supported by Synthesis Group