<xsl:template> 元素是 XSLT 样式表中的一个重要构建块,用于定义如何处理源 XML 文档中的特定元素或节点。每个 <xsl:template> 元素由两个主要部分组成:匹配模式(match 属性)和转换规则。

基本结构:
<xsl:template match="匹配模式">
  <!-- 转换规则 -->
</xsl:template>

匹配模式:

match 属性定义了该模板应该匹配的源 XML 文档中的元素或节点。匹配模式可以是一个元素名称、路径表达式,甚至是通配符。

例如,匹配所有 book 元素的模板:
<xsl:template match="book">
  <!-- 转换规则 -->
</xsl:template>

转换规则:

在 <xsl:template> 元素的主体中,你定义了处理匹配元素时要执行的转换规则。这可以包括文本输出、元素和属性的创建,以及对子元素的递归处理。

例如,处理 book 元素的转换规则:
<xsl:template match="book">
  <div>
    <h2><xsl:value-of select="title"/></h2>
    <p>Author: <xsl:value-of select="author"/></p>
    <p>Price: $<xsl:value-of select="price"/></p>
  </div>
</xsl:template>

在这个例子中,当 XSLT 处理器在源 XML 文档中找到一个 book 元素时,它将应用这个模板,创建一个包含标题、作者和价格信息的 div 元素。

使用模板的方式:

1. 直接应用: 使用 <xsl:apply-templates> 元素在模板内部显式调用其他模板,实现对子元素的递归处理。
<xsl:template match="books">
  <html>
    <body>
      <xsl:apply-templates/>
    </body>
  </html>
</xsl:template>

2. 模板匹配模式的优先级: 如果多个模板可以匹配同一个节点,XSLT 处理器将根据它们的优先级和特定的匹配规则选择一个模板。
<xsl:template match="book">
  <!-- 优先级高的模板 -->
</xsl:template>

<xsl:template match="book[price>50]">
  <!-- 优先级低,但条件更具体的模板 -->
</xsl:template>

总体而言,<xsl:template> 元素是 XSLT 样式表中定义转换规则的关键元素,通过匹配模式和转换规则的组合,可以灵活地控制对 XML 文档的转换。


转载请注明出处:http://www.pingtaimeng.com/article/detail/12205/XML