0

如何从 XSL 中的先前状态增加内部循环索引。最好的方法是什么,是最好地维护一个单独的全局变量还是使用任何内置函数。我是 XSL 的新手,请建议

输入 XML

<A1>
   <X1> ZERO </X1>   
</A1>
<A1>
   <X1> A </X1>
   <X1> B </X1>
</A1>
<A1>
   <X1> C </X1>
   <X1> D </X1>
</A1>
<A1>
   <X1> E </X1>
   <X1> F </X1>
</A1>

预期产出

Y1 1
Y1 2
Y1 3
Y1 4
Y1 5
Y1 6

使用以下 XSL 我得到

Y1 1
Y1 2
Y1 1
Y1 2
Y1 1
Y1 2

.

<xsl:for-each select="A1">
  <xsl:variable name="var:v50" select="position()" />
  <xsl:variable name="var:v51" select="userVBScript:FctNotEqual(string(X1/text()),"ZERO")" />
   <xsl:if test="$var:v51">
     <xsl:for-each select="X1">
       <xsl:variable name="var:v52" select="position()" />
       <Y1>
         <xsl:value-of select="$var:v52" />
       </Y1>  
     </xsl:for-each>
  </xsl:if>
</xsl:for-each>

你能建议一个示例代码吗?

4

1 回答 1

0

这可以通过一个xsl:for-each带有谓词过滤器的单个来更简单地解决,以仅选择所需的元素:

<xsl:for-each select="A1/X1[not(normalize-space()='ZERO')]">
    <Y1>
        <xsl:value-of select="position()"/>
    </Y1>  
</xsl:for-each>
于 2012-12-25T19:32:22.290 回答