Объяснение XSLT

Моя коллекция автомобилей Модель Lamborghini Gallardo

Что такое 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 .

Ресурсы

comments powered by Disqus