XSLT <apply-template>标签

<xsl:apply-template>标记用信号通知XSLT处理器根据每个所选节点的类型和上下文查找要应用的相应模板。

声明

以下是<xsl:apply-template>元素的语法声明。

<xsl:apply-template 
   select = Expression 
   mode = QName > 
</xsl:apply-template>

属性

  • select - 用于处理由XPath表达式选择的节点,而不是处理所有子节点。
  • mode - 允许多次处理由其限定名称指定的元素,每次生成不同的结果。

元素

  • 父元素 - xsl:attribute, xsl:comment, xsl:copy, xsl:element, xsl:fallback, xsl:foreach, xsl:if, xsl:message, xsl:otherwise, xsl:param, xsl:processing-instruction, xsl:template, xsl:variable, xsl:when, xsl:with-param, 输出元素
  • 子元素 - xsl:sort, xsl:with-param

示例

此示例通过迭代每个学生创建一个<student>元素列表,及其属性rollno及其子元素:<firstname><lastname><nickname><marks>

文件:students.xml -

<?xml version = 1.0?> 
<?xml-stylesheet type = text/xsl href = students.xsl?> 
<class> 
   <student rollno = 10010>
      <firstname>Machine</firstname> 
      <lastname>Lee</lastname> 
      <nickname>Machine</nickname> 
      <marks>85</marks>
   </student> 
   <student rollno = 10020> 
      <firstname>Max</firstname> 
      <lastname>Su</lastname> 
      <nickname>Maxsu</nickname> 
      <marks>95</marks>
   </student> 
   <student rollno = 10030> 
      <firstname>Yii</firstname> 
      <lastname>Bai</lastname> 
      <nickname>Yiibai</nickname> 
      <marks>90</marks> 
   </student>
</class>

文件:students.xsl -

<?xml version = 1.0 encoding = UTF-8?> 
<xsl:stylesheet version = 1.0 
   xmlns:xsl = http://www.w3.org/1999/XSL/Transform>   
   <xsl:template match = /> 
      <html> 
         <body> 
            <h2>学生信息列表 - </h2> 
            <xsl:apply-templates select = class/student /> 
         </body> 
      </html> 
   </xsl:template>  

   <xsl:template match = class/student> 
      <xsl:apply-templates select = @rollno /> 
      <xsl:apply-templates select = firstname /> 
      <xsl:apply-templates select = lastname /> 
      <xsl:apply-templates select = nickname /> 
      <xsl:apply-templates select = marks /> 
      <br /> 
   </xsl:template>  

   <xsl:template match = @rollno> 
      <span style = font-size = 22px;> 
         <xsl:value-of select = . /> 
      </span> 
      <br /> 
   </xsl:template>  

   <xsl:template match = firstname> 
      First Name:<span style = color:blue;> 
         <xsl:value-of select = . /> 
      </span> 
      <br /> 
   </xsl:template>  

   <xsl:template match = lastname> 
      Last Name:<span style = color:green;> 
         <xsl:value-of select = . /> 
      </span> 
      <br /> 
   </xsl:template>  

   <xsl:template match = nickname> 
      Nick Name:<span style = color:red;> 
         <xsl:value-of select = . /> 
      </span> 
      <br /> 
   </xsl:template>  

   <xsl:template match = marks> 
      Marks:<span style = color:gray;> 
         <xsl:value-of select = . /> 
      </span> 
      <br /> 
   </xsl:template>  

</xsl:stylesheet>

在浏览器中打上面文件:student.xml,效果如下所示 -