这个问题可能听起来很基本,但我对xsl中'SELECT'的目的究竟是什么感到困惑:调用模板
喜欢这里我有一个片段
<xsl:call-template name="tokenize">
<xsl:with-param name="string" select="//text()" />
那么select在以下代码段中做了什么
由于
答案 0 :(得分:0)
这是一个可能对您有所帮助的示例。输入XML:
<root>
<text>text1</text>
<text>text2</text>
<text>text3</text>
</root>
和XSLT:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/">
<root>
<xsl:call-template name="tokenize">
<xsl:with-param name="string" select="//text()"/>
</xsl:call-template>
</root>
</xsl:template>
<xsl:template name="tokenize">
<xsl:param name="string"/>
<xsl:for-each select="$string">
<xsl:element name="text{position()}">
<xsl:value-of select="."/>
</xsl:element>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
你得到的输出是:
<?xml version="1.0" encoding="utf-8"?>
<root>
<text1>text1</text1>
<text2>text2</text2>
<text3>text3</text3>
</root>
在匹配“/”的模板中,您正在调用另一个模板“tokenize”。 select语句“// text()”选择整个文档中的所有text()节点,这些节点作为参数“string”传递给“tokenize”模板。 模板“tokenize”接收所有这些文本节点,每个节点都循环,并使用text()节点的值创建一个元素。