XSLT 1.1节点集

时间:2010-06-22 18:17:51

标签: xslt saxon

我有这个......

<xsl:stylesheet version="1.1" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exslt="http://exslt.org/common">

  <xsl:variable name="data">
    <root>
      <test>1000</test>
      <test>2000</test>
      <test>3000</test>
     </root>
   </xsl:variable>   

   <xsl:template match="/">
     <xsl:for-each select="$data/root/test">
        <xsl:for-each select="."/>
     </xsl:for-each>
   </xsl:template>
</xsl:stylesheet>

我认为在XSLT 1.1中,$ data变量将被视为一个节点集,因此标准的XSLT内容(如for-each)应该可以正常工作。

我没有收到错误,但是没有输出 - 好像$ data nodeset完全是空的。

我也试过这个

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exslt="http://exslt.org/common">

      <xsl:variable name="data">
        <root>
          <test>1000</test>
          <test>2000</test>
          <test>3000</test>
         </root>
       </xsl:variable>   

       <xsl:template match="/">
         <xsl:for-each select="exslt:node-set($data)/root/test">
            <xsl:for-each select="."/>
         </xsl:for-each>
       </xsl:template>

</xsl:stylesheet>

结果相同。 (事实上​​,我之前没有遇到任何问题) 我正在使用撒克逊人。

我错过了什么? (顺便说一句,我不能使用XSLT 2.0)。

由于

2 个答案:

答案 0 :(得分:1)

您写道:

  

我没有得到错误,但我得不到   输出

问题在于:

<xsl:for-each select="."/> 

你的问题:

  

我错过了什么?

答案:您错过了模板

答案 1 :(得分:0)

<xsl:template match="/"> 
  <xsl:for-each select="exslt:node-set($data)/root/test">

     <xsl:for-each select="."/> 
  </xsl:for-each>     </xsl:template>

错误在以下(空)指令中

    <xsl:for-each select="."/> 

这(可能)必须

<xsl:value-of select="."/>

<xsl:copy-of select="."/>

或......?