0
我們試圖使用XSLT 1.0分別爲每個節點獲取唯一值。例如,XSLT 1.0分別在節點級別獲取唯一值
<root>
<node name="1234">
<node name="9876">
<child ln="2" name="CA1">
<CA01>10</CA01>
</child>
</node>
<node name="9876">
<child ln="2" name="CA1">
<CA01>9</CA01>
</child>
</node>
<node name="9876">
<child ln="2" name="CA1">
<CA01>10</CA01>
</child>
</node>
</node>
<node name="1234">
<node name="9876">
<child ln="2" name="CA1">
<CA01>10</CA01>
</child>
</node>
<node name="9876">
<child ln="2" name="CA1">
<CA01>5</CA01>
</child>
</node>
</node>
與代碼
<!-- Template called for each node 1234 -->
<xsl:for-each select="node[@name='9876']/child[@name='CA1']/CA01/text() [generate-id()
= generate-id(key('CA01Code',.)[1])]">
<xsl:value-of select="."/>
預期輸出
對於第一節點1234 =>10,9
對於第二節點1234 =>10,5
但是稱爲用於每個1234節點當實際輸出給不同的輸出
實際輸出
對於第一節點1234 =>10,9
對於第二節點1234 =>
編輯 XSLT與按鍵定義
鍵定義
<xsl:key name="CA01Code" match="node[@name='9876']/child[@name='CA1']/CA01/text()" use="." />
模板定義
<xsl:template match="node[@name='1234']">
<xsl:for-each select="node[@name='9876']/child[@name='CA1']/CA01/text()[generate-id() = generate-id(key('CA01Code',.)[1])]">
<xsl:value-of select="."/>
</xsl:for-each> </xsl:template>
請告訴我們主要定義完整的XSLT。通常,爲了將搜索限制在XSLT 1.0中的子樹中,可以使用一個鍵連接祖先的生成標識,例如' '。 –
感謝Martin給予快速回復。更新了關鍵定義和模板定義。請檢查 – sainathas