我刚开始学习XSL(T),我想知道如何apply-templates工作?我不明白递归应用模板的一部分,因为它写在我的书中.
我理解XSL(T)的XPath部分等等,但不知道apply-templates是做什么以及为什么我多次写它.
miz*_*izo 19
您<xsl:apply-templates>用来调用<xsl:template>已定义的:s.
<xsl:apply-templates> 为集合中的每个节点调用匹配的模板.
您可以通过指定select属性来控制处理顺序apply-templates.
从w3schools看这个例子:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h2>My CD Collection</h2>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>
<xsl:template match="cd">
<p>
<xsl:apply-templates select="title"/>
<xsl:apply-templates select="artist"/>
</p>
</xsl:template>
<xsl:template match="title">
Title: <span style="color:#ff0000">
<xsl:value-of select="."/></span>
<br />
</xsl:template>
<xsl:template match="artist">
Artist: <span style="color:#00ff00">
<xsl:value-of select="."/></span>
<br />
</xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)
每次遇到名为的元素时,第一个apply-templates调用cd模板"cd".
该cd模板依次调用title和artist模板来处理子元素<cd>.
title之前处理过artist.请注意,源XML中的元素artist和title元素的顺序没有区别.
你可以认为它与apply-templates过程语言中的子程序调用类似.
如果您在一本书中阅读了有关 apply-templates 的内容但还没有理解它,那么就不清楚这里的几句话是否会有所帮助。也许你需要一本不同的书:不同的教程风格吸引不同的人。或者,也许在线教程(例如http://vimeo.com/15234803)可以让您了解这些想法。
模板机制的本质是涉及两方。xsl:apply-templates 指令选择一些节点进行处理,模板规则(它们之间)决定处理应该是什么。这提供了非常松散的耦合和很好的关注点分离;它更像是面向对象的消息/方法发送,但更加灵活。