आपको डुप्लिकेट मिल रहे हैं क्योंकि आपका फ़िल्टर उस तरीके का मूल्यांकन नहीं कर रहा है जिस तरह से आप सोचते हैं।
स्थानीय नाम() समारोह प्रथम नोड nodeset में स्थानीय नाम देता है।
आपका अनुमानित फ़िल्टर काम करने का एकमात्र समय यह है कि यदि तत्व पहले के तत्व के समान नाम था।
मुझे नहीं लगता कि आप शुद्ध XPATH 1.0 आत्मा के साथ जो चाहते हैं उसे पूरा करने में सक्षम होंगे। आप इसे XPATH 2.0 में कर सकते हैं, लेकिन यह फ़ायरफ़ॉक्स के साथ काम नहीं करेगा।
XSLT में आप आप क्या चाहते हैं पूरा करने के लिए meunchien method उपयोग कर सकते हैं।
नीचे एक उदाहरण है। आप किसी भी नमूना XML प्रदान नहीं किया है, इसलिए मैं रखा यह बहुत सामान्य (जैसे // * दस्तावेज़ में सभी तत्वों के लिए मेल खाता है):
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"><xsl:output method="xml"/>
<xsl:key name="names" match="//*" use="local-name(.)"/>
<xsl:template match="/">
<xsl:for-each select="//*[generate-id(.) = generate-id(key('names', local-name(.)))]">
<!--Do something with the unique list of elements-->
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
स्रोत
2010-01-01 21:57:02
आपका कोड spits डुप्लिकेट आउट करें, क्योंकि सूची का आदेश नहीं दिया गया है। यह एक आदेशित सूची पर काम करेगा। –