2013-10-25 58 views
1

您好,我在我的xslt中使用一個外部命名模板來標記一個字符串並將其存儲在一個變量中。 我使用的是Altova XML SPY,我僅限於xslt 1.0。問題是每次我必須從內置XSLT引擎更改選項到Microsoft。 是否有任何節點集函數或一些其他函數而不是節點集的內置XSLT引擎XSLT 1.0在xslt-engine中構建的altova xmlspy是否沒有節點集功能?

<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

回答

0

XML間諜具有治療結果樹片段(RTF),好像他們是節點集的習慣。我找不到任何直接說明這一點的文檔,但這是你會發現的。

任何返回一個(RTF)並存儲在一個變量中的xsl命令,可以像查詢它是一個節點集一樣查詢,例如使用xsl:value-of

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