我的输入 XML 包含以下内容,
<root>
<entry>
<type>U</type>
<value>111</value>
</entry>
<entry>
<type>X</type>
<value>222</value>
</entry>
<entry>
<type>E</type>
<value>333</value>
</entry>
<entry>
<type>Q</type>
<value>444</value>
</entry>
</root>
输出我需要,
<ROOT>
<ENTRY>
<SLNO>1</SLNO>
<VALUE>111</VALUE>
</ENTRY>
<ENTRY>
<VALUE>222</VALUE>
</ENTRY>
<ENTRY>
<VALUE>333</VALUE>
</ENTRY>
<ENTRY>
<SLNO>2</SLNO>
<VALUE>444</VALUE>
</ENTRY>
</ROOT>
我需要解析所有记录,但需要为类型不是 X 和 E 的记录输入序列号。
我已经为相同的内容编写了一个 for-each 并使用 'position()' 来显示带有 E 和 X 类型条件的序列号。所以我得到序列号为 1、4 而不是 1、2 因为 '位置()'。
我想创建一个全局变量并在我的 if 块中增加它,但是 XSLT 1.0 不允许增加变量值。
我怎样才能做到这一点?
我的示例 XSL 代码如下,
<xsl:for-each select="/ROOT/ENTRY">
<xsl:if test="(TYPE != 'X') and (TYPE != 'E')">
<xsl:text><![CDATA[<SLNO>]]></xsl:text>
<xsl:number value="position()"/>
<xsl:text><![CDATA[</SLNO>]]></xsl:text>
</xsl:if>
<!-- Printing remaining values -->
</xsl:for-each>
请帮忙。