EXSL - 如何使用str:tokenize()?

时间:2014-09-15 19:20:27

标签: xml xslt xpath

我刚刚启动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)

2 个答案:

答案 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'"/>