我相信這是一個容易的但我只是不看樹的木材。如何計算具有相同屬性值的元素
我有一個XML看起來像這樣:
<root>
<profil>
<e1 a="2">1</e1>
<m1 a="3">1</m1>
<e2 a="4">1</e2>
<m2 a="5">1</m2>
</profil>
<profil>
<e1 a="5">1</e1>
<m1 a="3">1</m1>
<e2 a="4">1</e2>
<m2 a="4">1</m2>
</profil>
<profil>
<e1 a="7">1</e1>
<m1 a="7">1</m1>
<e2 a="4">1</e2>
<m2 a="2">1</m2>
</profil>
</root>
現在我想知道/ M/@一個多少都等於E */@一元/ PROFIL。所以,我想出了下面的XSLT:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="*">
<xsl:element name="root">
<xsl:for-each select="/root/profil">
<xsl:element name="count">
<xsl:value-of select="count(*[contains(name(), 'm') and ./@a = //*[contains(name(),'e')]/@a])"/>
</xsl:element>
</xsl:for-each>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
但結果是錯誤的:
<root>
<count>1</count>
<count>1</count>
<count>2</count>
</root>
應該
<root>
<count>0</count>
<count>1</count>
<count>1</count>
</root>
有沒有人有一個建議,我做錯了什麼?
+1爲好問題。 –
好問題,+1。請參閱我的答案,以獲得一個完整,簡短且容易的解決方案,該解決方案在您的案例標準XPath函數中使用最合適的方法:'starts-with()'。 :) –
我已更改標題以更好地匹配您的問題的內容。如果你關心它,可以自由地恢復到原來的狀態。 –