XSLT 1.0 xslt-engine内置的altova xmlspy是否没有节点集功能?

时间:2013-10-25 04:56:44

标签: xml xslt xslt-1.0

您好我在我的xslt中使用外部命名模板来标记字符串并将其存储在变量中。 我正在使用Altova XML SPY,我被限制为xslt 1.0。问题是每次我必须将内置XSLT引擎的选项更改为Microsoft。 是否有任何节点集函数或其他函数,而不是内置xslt引擎中的节点集

<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt">
<xsl:import href="tokenize.xsl"/>
<xsl:template match="/string/upara">

        <xsl:variable name="string">
            <xsl:call-template name="tokenizeString">
                <xsl:with-param name="list" select="/string/upara"/>
                <xsl:with-param name="delimiter" select="' '"/>

            </xsl:call-template>
       </xsl:variable>



<xsl:for-each select="msxsl:node-set($string)/word">
    <xsl:value-of select="string-length(.)" />
</xsl:for-each>
 </xsl:template>
 </xsl:stylesheet>

我正在使用的XML是

<string>
 <upara>This is a small string </upara>
 </string>

字符串变量包含所有单词节点

 <string>
 <word>This</word>
 <word>is</word>

现在我必须迭代每个单词并找到它的长度

请告诉我是否有更好的方法。

我有这个工作

抱歉,我是XSLT 1.0的新手并且感到困惑。 而不是使用节点集我只使用

<xsl:for-each select="$string/word">
xsl:value-of select="string-length(.)" />
<br></br>
</xsl:for-each>

完美无需改变引擎:):D

1 个答案:

答案 0 :(得分:0)

XML Spy习惯于将结果树片段(RTF)视为节点集。我找不到任何直接说明这一点的文档,但是你会找到它。

任何返回(RTF)并存储在变量中的xsl命令都可以像查询节点一样进行查询,例如使用xsl:value-of

This question,有一些XSLT引擎非特定的appraches可能值得一看。