Упрощенные преобразования

We use cookies. Read the Privacy and Cookie Policy

Упрощенные преобразования

Многие простые преобразования состоят из единственного правила, которое обрабатывает корневой узел входящего документа. Общий вид такого рода преобразований показан в следующем листинге.

Листинг 4.2. Простое преобразование

<xsl:stylesheet

 version="1.0"

 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

 <xsl:template match="/">

  <result>

   <!-- Шаблон -->

  </result>

 </xsl:template>

</xsl:stylesheet>

XSLT позволяет упрощать запись таких преобразований, опуская элементы xsl:stylesheet и xsl:template и оставляя только шаблон, создающий выходящий документ.

Корневой элемент упрощенной записи должен содержать атрибут xsl:version, указывающий версию языка XSLT, использованного в шаблоне. Как правило, этот элемент также содержит объявление пространства имен XSLT, хотя оно может быть определено и в другом месте.

Пример

Преобразование, приведенное в листинге 4.2, можно переписать в упрощенном виде следующим образом.

Листинг 4.3. Упрощённая запись преобразования

<result

 xsl:version="1.0"

 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

 <!-- Шаблон -->

</result >

Приведем еще один простой пример упрощенной записи преобразования, генерирующего простейшую HTML-страницу.

Листинг 4.4. Упрощённая запись преобразования XML-документа в HTML

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

 <head>

  <title>

   <xsl:value-of select="page/name"/>

  </title>

 </head>

 <body>

  <xsl:value-of select="page/content"/>

 </body>

</html>

Следующий листинг приводит полную версию этого же преобразования.

Листинг 4.5. Полная запись преобразования XML-документа в HTML

<xsl:stylesheet

 version="1.0"

 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

 <xsl:template match="/">

  <html>

   <head>

    <title>

     <xsl:value-of select="page/name"/>

    </title>

   </head>

   <body>

    <xsl:value-of select="page/content"/>

   </body>

  </html>

 </xsl:template>

</xsl:stylesheet>