【问题标题】:XSLT 1.0 Does altova xmlspy built in xslt-engine does not have node-set function?XSLT 1.0 xslt-engine 中内置的 altova xmlspy 是否没有节点集功能?
【发布时间】:2013-10-25 04:56:43
【问题描述】:

您好,我在我的 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

【问题讨论】:

    标签: xml xslt xslt-1.0


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-30
      • 2011-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-17
      • 1970-01-01
      相关资源
      最近更新 更多