Что такое XSLT?
На мой взгляд, XSLT похож на движки шаблонов Mako и Chameleon. XSLT в
основном используется для преобразования одного типа структурированного
языка разметки (например, XML) в другую форму, например HTML, JSON или
даже другой XML-документ. Это достигается за счет использования
идентификаторов XPath и элементов тегов XSL. Для преобразования одного
XML-документа в другой вы можете использовать элемент шаблона XSLT,
который использует существующий XSLT-файл для определения того, как
должен выглядеть результирующий XML.
\
Почему полезен XSLT?
Полезность XSLT лучше всего показать на примере. Итак, допустим, у нас есть XML-документ ниже:
<?xml version="1.0" encoding="ISO-8859-1"?>
<collection>
<car>
<make>Lamborghini</make>
<model>Gallardo</model>
<year>2013</year>
<price>$250,000</price>
</car>
<car>
<make>Ferrari</make>
<model>F12</model>
<year>2012</year>
<price>$330,000</price>
</car>
<car>
<make>Honda</make>
<model>Civic</model>
<year>2004</year>
<price>$2,500</price>
</car>
</collection>
Возможно, мы предпочтем отображать части этого XML в удобном, удобочитаемом формате, таком как HTML. Итак, мы создали шаблон, например:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h5>My Car Collection</h5>
<table border="1">
<tr bgcolor="#EC5923">
<th>Make</th>
<th>Model</th>
</tr>
<tr>
<td><xsl:value-of select="collection/car/make"/></td>
<td><xsl:value-of select="collection/car/model"/></td>
</tr>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Использование этого шаблона в XML, который у нас был выше, приведет к следующему HTML:
Моя коллекция автомобилей
Делать Модель Ламборджини Галлардо
Это, очевидно, намного легче читать. Хотя нет необходимости строго использовать XSLT для преобразования XML в HTML. Вместо этого вы можете использовать его для преобразования XML в другую структуру.
В качестве другого примера, возможно, вы работаете в компании, которая получает XML-данные от своих поставщиков, в которых подробно описывается, сколько запасов они имеют для своих продуктов, от A до Z. Но вас интересуют только продукты S, R и W, поэтому вместо хранения Всю эту ненужную информацию вы вместо этого использовали бы шаблон XSLT для извлечения только той информации, которая вам нужна, в данном случае это продукты S, R и W. Применение этого метода в большем масштабе приведет к большому количеству сохраненной памяти. и гораздо меньше беспорядка, с которым нужно иметь дело. Кроме того, изменить формат документа, возможно, будет намного проще, чем перекомпилировать код, который делает то же самое.
Имейте в виду, что этот короткий пример показывает лишь небольшую часть
того, что на самом деле может делать XSLT. Чтобы лучше понять, что
возможно, обязательно ознакомьтесь с приведенными ниже ресурсами.
\
Как вы используете XSLT?
Есть много способов использования XSLT, включая браузеры , Java, Python и почти любой другой язык программирования, о котором вы только можете подумать.
Как и все, преобразования XSLT можно легко выполнить в Python (с пакетом lxml ):
import lxml.etree as et
xml = et.parse(xml_filename)
xslt = et.parse(xsl_filename)
transform = et.XSLT(xslt)
newXml = transform(xml)
print(et.tostring(newXml, pretty_print=True))
И, как я упоминал ранее, XSLT может легко преобразовать XML в JSON .