我是新手XSLT開發人員。我被要求解決一個原始開發人員不在我們這個項目的問題。在XSLT,有一個for-each
循環使用key
和count
XSLT:for-each循環,鍵不返回所有節點
<xsl:for-each select="ns0:BOM[count(. | key('subsat', ns0:BomText01)[1]) = 1][ns0:BomText01]">
...
這是key
:
<xsl:key name="subsat" match="ns0:Parts/ns0:BOM[ns0:FindNum!='0']" use="ns0:BomText01" />
在XML文件中被轉化,也有表示子2個兄弟節點部件:
<ns0:BOM referentId="10000:65091335:65359080">
<ns0:BomText01>3069260-303-SUB0027</ns0:BomText01>
<ns0:ItemNumber>My_part_1</ns0:ItemNumber>
<ns0:ItemType>Part</ns0:ItemType>
<ns0:Qty>67</ns0:Qty>
</ns0:BOM>
<ns0:BOM referentId="10000:65102551:86713230">
<ns0:BomText01>3069260-303-SUB0027</ns0:BomText01>
<ns0:ItemNumber>My_part_2</ns0:ItemNumber>
<ns0:ItemType>Part</ns0:ItemType>
<ns0:Qty>67</ns0:Qty>
</ns0:BOM>
但是,該環路僅拾取第一個節點(My_part_1
)。我懷疑這是因爲count=1
,但我真的不知道。我不知道如何修改它。想法?如果我需要包含更多數據,請告訴我。
請包括您的XML源代碼(父元素,名稱空間聲明等)的全部上下文以及XSLT文檔的所有相關模板(包括根節點,密鑰聲明,上面的每個模板和其中的模板,和任何其他模板被稱爲) – helderdarocha
@Helderdarocha ...我希望我可以但它是專有內容。可能需要幾個小時才能完成它,並使其具有通用性。你有什麼建議如何計數的工作在foreach? – MikeTWebb
好的。我會看看。你的'鑰匙'似乎也是無效的。它必須是有效的*限定名稱* - 它不會以數字開頭。你能夠運行它嗎?你在用什麼處理器? – helderdarocha