Включение преобразования в документ

Включение преобразования в документ

Корневой элемент преобразования xsl:stylesheet может быть включен в преобразуемый документ со всеми дочерними элементами верхнего уровня и так далее. Для того чтобы использовать это преобразование, псевдоатрибут href инструкции по обработке xml-stylesheet должен указывать на идентификатор элемента xsl:stylesheet, определенный в его атрибуте id.

Пример

Листинг 4.20. Входящий документ

<?xml version="1.0"?>

<?xml-stylesheet type="text/xml" href="#transform"?>

<page>

 <title>Main page</title>

 <content>Main content</content>

 <xsl:stylesheet

  id="transform"

  version="1.0"

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

  <xsl:template match="/">

   <body title="{page/title}">

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

   </body>

  </xsl:template>

  <xsl:template match="xsl:stylesheet"/>

 </xsl:stylesheet>

</page>

Листинг 4.21. Выходящий документ

<body title="Main page">

 Main content

</body>

Поскольку элемент xsl:stylesheet включен в преобразуемый документ, он также подвергнется преобразованию. Для того чтобы избежать этого, в преобразование включается шаблонное правило, которое указывает, что элементы xsl:stylesheet следует игнорировать:

<xsl:template match="xsl:stylesheet"/>

К сожалению, приходится констатировать тот факт, что описанную возможность (хотя она и включена в спецификацию языка XSLT) поддерживают очень немногие процессоры и поэтому пока что на нее не следует полагаться.