xml - नोड में अलग-अलग मान कैसे गिनें?




xslt xslt-grouping (3)

इस तरह से कुछ प्रयास करें:

count(//Country[not(following::Country/text() = text())])

"मुझे निम्नलिखित देश के बिना सभी कंट्री नोड्स की गिनती के साथ मेल करें"

उस अभिव्यक्ति का दिलचस्प बिट, आईएमओ, निम्न अक्ष है

आप संभवत: पहले /text() को भी निकाल सकते हैं, और दूसरे के साथ प्रतिस्थापित कर सकते हैं .

XSLT में नोड में अलग-अलग मान कैसे गिनें?

उदाहरण: मैं देश के नोड्स में मौजूदा देशों की संख्या की गणना करना चाहता हूं, इस मामले में, यह 3 होगा

<Artists_by_Countries>
    <Artist_by_Country>
        <Location_ID>62</Location_ID>
        <Artist_ID>212</Artist_ID>
        <Country>Argentina</Country>
    </Artist_by_Country>
    <Artist_by_Country>
        <Location_ID>4</Location_ID>
        <Artist_ID>108</Artist_ID>
        <Country>Australia</Country>
    </Artist_by_Country>
    <Artist_by_Country>
        <Location_ID>4</Location_ID>
        <Artist_ID>111</Artist_ID>
        <Country>Australia</Country>
    </Artist_by_Country>
    <Artist_by_Country>
        <Location_ID>12</Location_ID>
        <Artist_ID>78</Artist_ID>
        <Country>Germany</Country>
    </Artist_by_Country>
</Artists_by_Countries>

एक्सएसएलटी 1.0 में यह स्पष्ट नहीं है, लेकिन निम्नलिखित आपको आवश्यकता का एक विचार देना चाहिए:

count(//Artist_by_Country[not(Location_ID=preceding-sibling::Artist_by_Country/Location_ID)]/Location_ID)

आपके एक्सएमएल में जितने अधिक तत्व लेते हैं, उतने ही समय लगता है क्योंकि यह प्रत्येक एकल तत्व के प्रत्येक पूर्ववर्ती भाई को देखता है।


यदि आपके पास देश के पहले दौर में एक्सएमएल पीढ़ी का नियंत्रण है तो आप देश के नोड में एक विशेषताओं को जोड़ सकते हैं जैसे कि अलग-अलग 'सच्चे' झंडा देश को "प्रयोग" के रूप में चिह्नित करते हैं और न कि बाद में उस विशेष विशेषता को जोड़ते हैं, यदि आप उस पर आते हैं देश फिर से

आप तब कर सकते हैं

<xsl:for-each select="Artists_by_Countries/Artist_by_Country/Country[@distinct='true']" />