Главная -> XML&... -> XSLT в примерах 
>> Страница 64 << | Назад | Вперед | Содержание | Указатель

Элемент xsl:copy может иметь атрибут use-attribute-sets. В этом случае можно определить атрибуты для копируемого элемента. Преобразование 2 не будет выполняться, как ожидалось (установка use-attribute-sets при помощи функции name), так как выражения в атрибутах, относящиеся к именованным XSLT-объектам не могут быть вычислены.

Преобразование 1

Исходный XML
<source>

<h1>GREETING</h1>
<p>Hello, world!</p>

</source>

Результат
<h1 align="center" style="color:red">GREETING</h1>
<p align="left" style="color:blue">Hello, world!</p>

Представление HTML

GREETING

Hello, world!

Преобразование XSLT
<xsl:stylesheet version = '1.0'
     xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

<xsl:template match="/">
     <xsl:apply-templates select="/source/*"/>
</xsl:template>

<xsl:template match="h1">
     <xsl:copy use-attribute-sets="H1">
          <xsl:value-of select="."/>
     </xsl:copy>
</xsl:template>

<xsl:template match="p">
     <xsl:copy use-attribute-sets="P ">
          <xsl:value-of select="."/>
     </xsl:copy>
</xsl:template>

<xsl:attribute-set name="H1">
     <xsl:attribute name="align">center</xsl:attribute>
     <xsl:attribute name="style">color:red</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="P">
     <xsl:attribute name="align">left</xsl:attribute>
     <xsl:attribute name="style">color:blue</xsl:attribute>
</xsl:attribute-set>

</xsl:stylesheet>



Преобразование 2

Исходный XML
<source>

<h1>GREETING</h1>
<p>Hello, world!</p>

</source>

Результат
Failed to compile stylesheet. 1 error detected.

Представление HTML
Failed to compile stylesheet. 1 error detected.
Преобразование XSLT
<xsl:stylesheet version = '1.0'
     xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

<xsl:template match="/">
     <xsl:apply-templates select="/source/*"/>
</xsl:template>

<xsl:template match="*">
     <xsl:copy use-attribute-sets="{name(.)}">
          <xsl:value-of select="."/>
     </xsl:copy>
</xsl:template>

<xsl:attribute-set name="H1">
     <xsl:attribute name="align">center</xsl:attribute>
     <xsl:attribute name="style">color:red</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="P">
     <xsl:attribute name="align">left</xsl:attribute>
     <xsl:attribute name="style">color:blue</xsl:attribute>
</xsl:attribute-set>

</xsl:stylesheet>

Raleigh.ru Copyright © 2002