我的輸入XML由以下部分組成,XSLT顯示序號
<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>
輸出I需要, <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.
我已經寫了一對 - 每個爲相同和使用'position()'顯示一個序列號的條件爲E和X型。 因此,我得到的序列號爲1,4,而不是1,2,因爲'postion()' 。
我想創建一個全局變量並在我的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>
請幫助。
您可能會感興趣的一個解決方案,更快(O(N) - 線性),比目前公認的一個(二次 - O(N^2) –