MasterGH

Заворушка с XML данными / XSL

1 сообщение в этой теме

Большинство людей знают о HTML/CSS/javascript/XML, но никогда не знали, что по XML данным можно формировать, например, HTML по другой разметке XSL.

Формат XML это необычно мощная маркап разметка данных.

XML и HTML = XSL = XSLT+ EXSLT + XPath + XSL-FO

XSL - языки преобразования и визуализации XML-документов:

1) XSLT: язык преобразования XML-документов

2) EXSLT (Extensions to Extensible Stylesheet Language Transformations) — общественная инициатива по созданию расширений для XSLT, придающих бо?льшую функциональность языку трансформаций. Образцами расширений являются математические функции (генерация случайного числа), работа с датами, расширенные операции со строками и регулярными выражениями.

3) XPath (XML Path Language) — язык запросов к элементам XML-документа.Разработан для организации доступа к частям документа XML в файлах трансформации XSLT. Входит в XQuery.

4) XSL-FO - язык разметки типографских макетов и иных предпечатных материалов.

Короче из XML можно сгенерировать HTML, XHTML, тестовый файл и даже можно сформовать другой XML. А также благодаря языку XSL-FO можно сформовать документ для печати в виде текстового фалйа, PDF, PS, RTF. А также SQL, или даже SWF (flash-запускаемый модуль), а также сформировать другую XSL разметку.

Наиболее востребованное это XSLT и XPath с помощью которых можно создавать стили формирования документов из динамично изменяющейся базы данных. Таким образом вам достаточно иметь в Интернете вирутальную папку с ftp доступом для обновления вашей базы данных XML. Когда пользователь открывает ваш сайт, то формируется из XSLT+XPath. Весьма удобно если у вас нет доступа к инфраструктурам: серверу базы данных, веб-серверу и т.п.

Хороший пример: Группировка и сортировка годов

XML:

 <?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="years.xsl"?>
<root>
<object year="2003"/>
<object year="2001"/>
<object year="2005"/>
<object year="2005"/>
<object year="2003"/>
<object year="2006"/>
<object year="2006"/>
<object year="2006"/>
<object year="2005"/>
<object year="2001"/>
</root>

years.xsl:

 <?xml version="1.0"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:key name="years" match="/root/object" use="@year" />

<xsl:template match="root" priority="-1">
<HTML>
<BODY>
<xsl:for-each select="object[generate-id()=generate-id(key('years',@year))]">
<xsl:sort select="@year" order="descending"/>

<xsl:value-of select="@year" />
<xsl:if test="position()!=last()">
<xsl:text>, </xsl:text>
</xsl:if>
</xsl:for-each>
</BODY>
</HTML>
</xsl:template>
</xsl:stylesheet>

Результат:

2006, 2005, 2003, 2001

Теперь не только программисты, но и вы знаете о роли XLS.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас