English | Français | Deutsch | Magyar | >> 中文 << | Polski ZVON > Tutorials > XSLT Tutorial
>> 页 10 << | 上一条 | 下一条 | 目录 | 元素索引

使用 mode 可以把一个元素处理多次,每一次处理得到不同的结果。With modes an element can be processed multiple times, each time producing a different result. 在 XSLT stylesheet 2 中,有一个 mode 是不存在的。

XSLT stylesheet 1

XML源码
<source>

<AAA id="a1" pos="start">
     <BBB id="b1"/>
     <BBB id="b2"/>
</AAA>
<AAA id="a2">
     <BBB id="b3"/>
     <BBB id="b4"/>
     <CCC id="c1">
          <CCC id="c2"/>
     </CCC>
     <BBB id="b5">
          <CCC id="c3"/>
     </BBB>
</AAA>

</source>

输出
<div style="color:red">CCC id=c1</div>
<div style="color:red">CCC id=c2</div>
<div style="color:red">CCC id=c3</div>
<div style="color:blue">CCC id=c1</div>
<div style="color:blue">CCC id=c2</div>
<div style="color:blue">CCC id=c3</div>
<div style="color:purple">CCC id=c1</div>
<div style="color:purple">CCC id=c2</div>
<div style="color:purple">CCC id=c3</div>

用HTML察看
CCC id=c1
CCC id=c2
CCC id=c3
CCC id=c1
CCC id=c2
CCC id=c3
CCC id=c1
CCC id=c2
CCC id=c3
XSLT stylesheet
<xsl:stylesheet version = '1.0'
     xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

<xsl:template match="/">
     <xsl:apply-templates select="//CCC" mode="red"/>
     <xsl:apply-templates select="//CCC" mode="blue"/>
     <xsl:apply-templates select="//CCC"/>
</xsl:template>

<xsl:template match="CCC" mode="red">
     <div style="color:red">
          <xsl:value-of select="name()"/>
          <xsl:text> id=</xsl:text>
          <xsl:value-of select="@id"/>
     </div>
</xsl:template>

<xsl:template match="CCC" mode="blue">
     <div style="color:blue">
          <xsl:value-of select="name()"/>
          <xsl:text> id=</xsl:text>
          <xsl:value-of select="@id"/>
     </div>
</xsl:template>

<xsl:template match="CCC">
     <div style="color:purple">
          <xsl:value-of select="name()"/>
          <xsl:text> id=</xsl:text>
          <xsl:value-of select="@id"/>
     </div>
</xsl:template>


</xsl:stylesheet>


XSLT stylesheet 2

XML源码
<source>

<AAA id="a1" pos="start">
     <BBB id="b1"/>
     <BBB id="b2"/>
</AAA>
<AAA id="a2">
     <BBB id="b3"/>
     <BBB id="b4"/>
     <CCC id="c1">
          <CCC id="c2"/>
     </CCC>
     <BBB id="b5">
          <CCC id="c3"/>
     </BBB>
</AAA>

</source>

输出
<div style="color:red">CCC id=c1</div>
<div style="color:red">CCC id=c2</div>
<div style="color:red">CCC id=c3</div>

用HTML察看
CCC id=c1
CCC id=c2
CCC id=c3
XSLT stylesheet
<xsl:stylesheet version = '1.0'
     xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

<xsl:template match="/">
     <xsl:apply-templates select="//CCC" mode="red"/>
     <xsl:apply-templates select="//CCC" mode="yellow"/>
</xsl:template>

<xsl:template match="CCC" mode="red">
     <div style="color:red">
          <xsl:value-of select="name()"/>
          <xsl:text> id=</xsl:text>
          <xsl:value-of select="@id"/>
     </div>
</xsl:template>

<xsl:template match="CCC">
     <div style="color:purple">
          <xsl:value-of select="name()"/>
          <xsl:text> id=</xsl:text>
          <xsl:value-of select="@id"/>
     </div>
</xsl:template>


</xsl:stylesheet>