我刚刚启动XSLT,我尝试在XSLT 1.0中使用str:tokenize()模板。 我查了一下:http://www.exslt.org/str/functions/tokenize/index.html
但我无法获得预期的结果。
这是代码:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:exsl="http://exslt.org/common"
xmlns:str="http://exslt.org/strings"
exclude-result-prefixes="str">
<xsl:output method="xml"/>
<xsl:template match="/">
<xsl:variable name="var" select="John.Wayne"/>
<root>
<xsl:for-each select="str:tokenize($var,'.')">
<element>
<xsl:value-of select="."/>
</element>
</xsl:for-each>
</root>
</xsl:template>
</xsl:stylesheet>
我的预期输出应为:
<root>
<element>John</element>
<element>Wayne</element>
</root>
任何帮助表示赞赏。提前致谢! 哦,顺便说一句,我的输出是:
<?xml version="1.0"?>
<root/>
(我使用xsltproc)
答案 0 :(得分:2)
问题不在于标记化,而在于您如何设置变量
<xsl:variable name="var" select="John.Wayne"/>
这是在寻找一个名为John.Wayne
的元素。我想你真的想在这里使用字符串文字...
试试这个!
<xsl:variable name="var" select="'John.Wayne'"/>
答案 1 :(得分:1)
该行
<xsl:variable name="var" select="John.Wayne"/>
正在为var
分配评估XPath John.Wayne
的结果。
要指定var
字符串值 John.Wayne
,您必须使用单引号将其包围:
<xsl:variable name="var" select="'John.Wayne'"/>