Вы здесь

Отображение XML с использованием XSLT

При помощи XSLT вы можете преобразовывать XML документ в HTML.

XSLT (eXtensible Stylesheet Language Transformations), язык преобразования XML документов, является рекомендованным языком таблиц стилей для XML.

XSLT более сложный язык таблиц стилей, чем CSS. Используя XSLT вы можете добавлять/удалять элементы и атрибуты в конечном файле отображения. Также, вы можете реорганизовывать и сортировать элементы, осуществлять проверки и принимать решения о том, какие элементы скрывать, а какие отображать. И многое другое.

XSLT использует XPath для поиска информации в XML документе.

Пример XSLT

Будем использовать следующий XML документ:


<?xml version="1.0" encoding="UTF-8"?>
<breakfast_menu>
   <food>
      <name>Belgian Waffles</name>
      <price>$5.95</price>
      <description>Two of our famous Belgian Waffles with plenty of real maple syrup</description>
      <calories>650</calories>
   </food>
   <food>
      <name>Strawberry Belgian Waffles</name>
      <price>$7.95</price>
      <description>Light Belgian waffles covered with strawberries and whipped cream</description>
      <calories>900</calories>
   </food>
   <food>
      <name>Berry-Berry Belgian Waffles</name>
      <price>$8.95</price>
      <description>Light Belgian waffles covered with an assortment of fresh berries and whipped cream</description>
      <calories>900</calories>
   </food>
   <food>
      <name>French Toast</name>
      <price>$4.50</price>
      <description>Thick slices made from our homemade sourdough bread</description>
      <calories>600</calories>
   </food>
   <food>
      <name>Homestyle Breakfast</name>
      <price>$6.95</price>
      <description>Two eggs, bacon or sausage, toast, and our ever-popular hash browns</description>
      <calories>950</calories>
   </food>
</breakfast_menu>

Перед выводом в браузер используем XSLT для преобразования XML в HTML.

Пример таблицы стилей XSLT:


<?xml version="1.0" encoding="UTF-8"?>
<html xsl:version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<body style="font-family: Arial; font-size: 12pt; background-color: #EEE">
   <xsl:for-each select="breakfast_menu/food">
      <div style="background-color: teal; color: white; padding: 4px">
         <span style="font-weight: bold"><xsl:value-of select="name"/> - </span>
         <xsl:value-of select="price"/>
      </div>
      <div style="margin-left: 20px; margin-bottom: 1em; font-size: 10pt">
         <p>
            <xsl:value-of select="description"/>
            <span style="font-style: italic"> (<xsl:value-of select="calories"/> calories per serving)</span>
         </p>
      </div>
   </xsl:for-each>
</body>
</html>