xslt учебник
Начало работы с xslt
Поиск…
замечания
XSLT (XSL Transformations, Extensible Stylesheet Language Transformations) - это язык программирования, основанный на XML и предназначенный для манипулирования и преобразования XML. Это функциональный язык программирования и стандарт W3C. Используя XSLT, вы можете преобразовать один или несколько XML-документов в результат, который может иметь множество выходных форматов (XML, HTML, текст).
Чтобы понять XSLT - лучше иметь хорошие рабочие знания:
- XML
- XPath
Без этих двух базовых понятий вам будет сложно освоить XSLT. Во-первых, поскольку документ XSLT является XML-документом. Во-вторых, XSLT-документы используют XPath для запроса преобразованного XML-документа.
Рекомендуемое чтение: https://en.wikipedia.org/wiki/XSLT
Версии
| Версия | Спецификация | Статус | Дата выхода |
|---|---|---|---|
| XSLT 1.0 | https://www.w3.org/TR/xslt | Рекомендация | 1998-08-18 |
| XSLT 2.0 | https://www.w3.org/TR/xslt20 | Рекомендация | 2007-01-23 |
| XSLT 3.0 | https://www.w3.org/TR/xslt-30 | Рекомендация кандидата | 2015-11-19 |
Установка или настройка
XSLT - это специальный язык программирования; он широко используется для преобразования XML-документов либо в другой формат XML, в HTML, либо в текстовые форматы.
Существуют две основные версии XSLT: XSLT 1.0 и XSLT 2.0. XSLT 1.0 более широко внедрен, но имеет множество ограничений и ограничений по сравнению с XSLT 2.0; вам нужно будет решить, какую версию использовать. Если процессор XSLT 2.0 доступен для выбранной вами среды, то это почти всегда лучший выбор.
(XSLT 1.0 вышел в ноябре 1999 года, и многие реализации появились через год или два, как от крупных поставщиков, таких как Microsoft, IBM, Sun и Oracle, а также от отдельных энтузиастов, работающих в свободное время. XSLT 2.0 вышел в январе 2007, а многие из первоначальных процессоров 1.0 никогда не обновлялись, потому что их разработчики потеряли интерес. Наиболее широко используемым процессором XSLT 2.0 является Saxon, но у него нет поля для себя: другие автономные продукты включают RaptorXML (от Altova ), XmlPrime (из CBCL) и Exselt, а также 2.0 процессоры также доступны в IBM WebLogic, на сервере баз данных XML MarkLogic и в XML-ускорителе Intel.)
Спецификация XSLT 3.0 технически завершена (предлагаемая рекомендация в апреле 2017 года), но на данный момент ее лучше рассматривать как проблему кровотечения: учтите ее только в том случае, если у вас есть настоятельная необходимость в ее новых функциях, таких как потоковая передача, пакеты, поддержка JSON , или попробуйте / поймайте. Существуют три известные реализации: Saxon, Exselt и RaptorXML.
Чтобы начать работу с XSLT, у вас есть несколько вариантов:
Используйте онлайн-инструмент XSLT. Существует несколько доступных (поиск «онлайн-инструмента XSLT»), очень надежной онлайн-IDE является http://xsltransform.net/ . Это хороший способ получить первоначальное представление о языке, но вы не захотите продолжать этот путь, как только будете заниматься реальной разработкой.
Используйте движок XSLT, встроенный в каждый браузер. Как и в случае с онлайн-инструментами, они имеют то преимущество, что вам не нужно ничего устанавливать; но браузеры поддерживают только XSLT 1.0, они поддерживают только преобразование XML-HTML, и у них очень слабая поддержка отладки. Очень недавняя, но все еще экспериментальная - разработка Saxon-JS, которая позволяет выполнять XSLT 2.0 (и части XSLT 3.0) в браузере.
Установите XSLT-процессор (например, Saxon или xsltproc). Большинство из этих продуктов можно вызвать с помощью командной строки операционной системы или с помощью API для определенных языков программирования, таких как Java, C, C # или Python.
Установите среду разработки XML, такую как Altova XML Spy, oXygen от SyncroSoft или Stylus Studio. Хотя это более дорогой вариант, он дает гораздо более богатую поддержку разработки и отладки.
Какой бы вариант вы ни выбрали, вы должны сначала решить, хотите ли вы использовать XSLT 1.0 или XSLT 2.0.
Простой пример XSLT
Вот простой пример, который использует XSLT для преобразования данных в XML-файл в таблицу в файле HTML. Вы можете использовать его для экспериментов с простыми преобразованиями XSLT.
Предварительное условие: установите среду выполнения Java и добавьте местоположение JRE в переменную PATH. (В Windows большинство установщиков добавят Java к вашему пути для вас.) Если это работает, вы должны открыть окно командной строки и запустить команду java -version и получить распечатку информации о вашей JRE.
- Загрузите процессор Saxon-HE XSLT для Java здесь: saxon.sourceforge.net и разархивируйте его в любом месте на вашем компьютере.
- В текстовом редакторе создайте файл с именем
pets.xmlсо следующим кодом:
<pets>
<petType name="Dogs">
<pet id="123" name="Sparky" vaccineStatus="vaccinated" healthStatus="healthy"/>
<pet id="234" name="Sadie" vaccineStatus="unvaccinated" healthStatus="sick"/>
<pet id="345" name="Herman" vaccineStatus="unvaccinated" healthStatus="unknown"/>
</petType>
<petType name="Cats">
<pet id="456" name="Cleo" vaccineStatus="vaccinated" healthStatus="healthy"/>
<pet id="567" name="Janet" vaccineStatus="unvaccinated" healthStatus="healthy"/>
<pet id="678" name="Furry" vaccineStatus="vaccinated" healthStatus="sick"/>
</petType>
</pets>
- В текстовом редакторе создайте файл
petTransform.xslсо следующим кодом:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="2.0">
<!-- handle the root XML element -->
<xsl:template match="/">
<html><head>
<title>Pets that are available for adoption</title>
</head>
<body>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>
<xsl:template match="pets">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="petType">
<h2><xsl:value-of select="@name"/></h2>
<table id="{@name}">
<tr>
<th colname="id">ID</th>
<th colname="name">Name</th>
<th colname="vaccinated">Vaccine status</th>
<th colname="health">Health status</th>
</tr>
<tbody>
<!-- add a row for each pet in this category -->
<xsl:for-each select="pet">
<tr>
<td colname="id"><xsl:value-of select="@id"/></td>
<td colname="name"><xsl:value-of select="@name"/></td>
<td colname="vaccinated"><xsl:value-of select="@vaccineStatus"/></td>
<td colname="health"><xsl:value-of select="@healthStatus"/></td>
</tr>
</xsl:for-each>
</tbody>
</table>
</xsl:template>
<!-- ignore the content of other tags because we processed them elsewhere -->
<xsl:template match="*">
<!-- do nothing -->
</xsl:template>
</xsl:stylesheet>
- Откройте окно командной строки и перейдите в папку с файлами XML и XSLT.
- Выполните следующую команду, где
path_to_saxon.jar- это полный путь к файлуsaxon9he.jar:
java -jar "path_to_saxon.jar" -o
petOutput.html -s:pets.xml -xsl:pettransform.xslt
Например:
java -jar "C:\Program Files\SaxonHE9-7-0-7J\saxon9he.jar" -o
petOutput.html -s:pets.xml -xsl:pettransform.xslt
Обязательно выполните эту команду в одной строке.
- Откройте выходной файл
petOutput.htmlв текстовом редакторе. Он должен выглядеть так:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Pets that are available for adoption</title>
</head>
<body>
<h2>Dogs</h2>
<table id="Dogs">
<tr>
<th colname="id">ID</th>
<th colname="name">Name</th>
<th colname="vaccinated">Vaccine status</th>
<th colname="health">Health status</th>
</tr>
<tbody>
<tr>
<td colname="id">123</td>
<td colname="name">Sparky</td>
<td colname="vaccinated">vaccinated</td>
<td colname="health">healthy</td>
</tr>
<tr>
<td colname="id">234</td>
<td colname="name">Sadie</td>
<td colname="vaccinated">unvaccinated</td>
<td colname="health">sick</td>
</tr>
<tr>
<td colname="id">345</td>
<td colname="name">Herman</td>
<td colname="vaccinated">unvaccinated</td>
<td colname="health">unknown</td>
</tr>
</tbody>
</table>
<h2>Cats</h2>
<table id="Cats">
<tr>
<th colname="id">ID</th>
<th colname="name">Name</th>
<th colname="vaccinated">Vaccine status</th>
<th colname="health">Health status</th>
</tr>
<tbody>
<tr>
<td colname="id">456</td>
<td colname="name">Cleo</td>
<td colname="vaccinated">vaccinated</td>
<td colname="health">healthy</td>
</tr>
<tr>
<td colname="id">567</td>
<td colname="name">Janet</td>
<td colname="vaccinated">unvaccinated</td>
<td colname="health">healthy</td>
</tr>
<tr>
<td colname="id">678</td>
<td colname="name">Furry</td>
<td colname="vaccinated">vaccinated</td>
<td colname="health">sick</td>
</tr>
</tbody>
</table>
</body>
</html>
- Откройте выходной файл
petOutput.htmlв веб-браузере. Он должен показывать данные в простой таблице.