XSLT <xsl:apply-templates> 元素

  • 定义和使用

    <xsl:apply-templates> 元素将模板应用于当前元素或当前元素的子节点。
    如果我们向 <xsl:apply-templates> 元素它将只处理与属性值匹配的子元素。我们可以使用 select 属性指定子节点的处理顺序。
  • 语法

    <xsl:apply-templates select="expression" mode="name">
      <!-- Content:(xsl:sort|xsl:with-param)* -->
    </xsl:apply-templates>
  • 参数

    属性 描述
    select expression 可选。指定要处理的节点。星号选择整个节点集。如果省略此属性,将选择当前节点的所有子节点
    mode name 可选。如果为同一个元素定义了多种处理方法,则对它们进行区分
  • 示例

    在文档中的每个 title 元素周围环绕一个 h1 元素:
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    
    <xsl:template match="title">
      <h1><xsl:apply-templates/></h1>
    </xsl:template>
    
    </xsl:stylesheet>
    将单个 h1 元素环绕作为消息子级的所有 title 元素:
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    
    <xsl:template match="message">
      <h1><xsl:apply-templates select="title"/></h1>
    </xsl:template>
    
    </xsl:stylesheet>
    在 mode 属性设置为 “big” 的消息的所有子节点周围包装一个 h1 元素:
    <?xml version="1.0" encoding="UTF-8"?>
      <xsl:stylesheet version="1.0"
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      
      <xsl:template match="message">
        <h1><xsl:apply-templates select="*" mode="big"/></h1>
      </xsl:template>
      
    </xsl:stylesheet>