html - using xslt key for finding unique values -
& lt; रूट & gt; & Lt; ए.ए. एटट्र = "xyz1" & gt; & Lt; BB bAttr1 = "firefox" bAttr2 = "aaa" & gt; & Lt; / बी बी & gt; & Lt; BB bAttr1 = "chrome" bAttr2 = "aaa" & gt; & Lt; / बी बी & gt; & Lt; BB bAttr1 = "फ़ायरफ़ॉक्स" bAttr2 = "bbb" & gt; & Lt; / बी बी & gt; & Lt; BB bAttr1 = "chrome" bAttr2 = "bbb" & gt; & Lt; / बी बी & gt; & Lt; / एए & gt; & Lt; ए.ए. Aattr = "xyz2" & gt; & Lt; BB bAttr1 = "firefox" bAttr2 = "aaa" & gt; & Lt; / बी बी & gt; & Lt; BB bAttr1 = "chrome" bAttr2 = "ccc" & gt; & Lt; / बी बी & gt; & Lt; BB bAttr1 = "firefox" bAttr2 = "ddd" & gt; & Lt; / बी बी & gt; & Lt; / एए & gt;
मैं नोड 'बी' में एटिब्यूट 'बीएटीआर 2' के अलग-अलग मानों का चयन करना चाहता हूं, नोड 'एए' से, जहां विशेषता 'एटट्र' xyz1 < / P>
दी xml के लिए कहो, मुझे आउटपुट "एएए", "बीबीबी" के रूप में होना चाहिए
मैंने कुंजी का उपयोग करके निम्नलिखित तर्क की कोशिश की है लेकिन काम नहीं किया कृपया <पूर्व> & lt; xsl: key name = "nameDistinct" मैच = "बीबी" का उपयोग करें = "@ बीएटीआर 1" / & gt; & Lt; xsl: टेम्पलेट मैच = "/" & gt; & Lt; xsl: प्रत्येक चयन = "रूट / एए [@ एएटीआर = 'एक्सवाय 1']" & gt; & Lt; xsl: प्रत्येक चयन = "बीबी [जेनरेट-आईडी () = जेनरेट-आईडी (कुंजी ('नेम डिस्टिच', @ बीएटीटी 2) [1])]" & gt; & Lt; xsl: मान का चयन करें = "@ बीएटीआर 2" / & gt; & Lt; / XSL: के लिए-प्रत्येक & gt; & Lt; / XSL: के लिए-प्रत्येक & gt; & Lt; / XSL: टेम्पलेट & gt;
आपके पास यहां दो विकल्प हैं:
उपलब्ध आइटम फ़िल्टर करें जब आप इसे परिभाषित करते हैं तो कुंजी के लिए:
& lt; xsl: key name = "nameDistinct" मैच = "एए [@ एटट्रू = 'xyz1'] / बीबी" उपयोग = "@ बीएटीआर 2" / & gt; & Lt; xsl: टेम्पलेट मैच = "/" & gt; & Lt; xsl: प्रत्येक चयन = "रूट / एए / बीबी [जेनरेट-आईडी () = जेनरेट-आईडी (कुंजी ('नेम डिस्टिच', @ बीएटीटी 2) [1])]" & gt; & Lt; xsl: मान का चयन करें = "@ बीएटीआर 2" / & gt; & Lt; / XSL: के लिए-प्रत्येक & gt; & Lt; / XSL: टेम्पलेट & gt; या समूहीकृत अभिव्यक्ति के भीतर फ़िल्टर करें:
& lt; xsl: key name = "nameDistinct" मैच = "बीबी" उपयोग = "@ बीएटीआर 2" / & gt; & Lt; xsl: टेम्पलेट मैच = "/" & gt; & Lt; xsl: प्रत्येक चयन = "रूट / एए / बीबी [जेनरेट-आईडी () = जेनरेट-आईडी (कुंजी ('नेम डिस्टिच', @ बीएटीटी 2) [../@Aattr = 'xyz1'] [1]) ] "& gt; & Lt; xsl: मान का चयन करें = "@ बीएटीआर 2" / & gt; & Lt; / XSL: के लिए-प्रत्येक & gt; & Lt; / XSL: टेम्पलेट & gt; पूर्व दृष्टिकोण थोड़ा कम गड़बड़ है और मामूली रूप से अधिक कुशल है, जबकि बाद में आप समूहिंग को पैरामीराइज करने की अनुमति देता है (यानी उन मानों पर जो समूह 'xyz1' के रूप में कठोर नहीं हैं), उदाहरण के लिए : <पूर्व> & lt; xsl: key name = "nameDistinct" मैच = "बीबी" का उपयोग करें = "@ बीएटीआर 2" / & gt; & Lt; xsl: टेम्पलेट मैच = "/" & gt; & Lt; xsl: प्रत्येक चयन = "रूट / एए" & gt; & Lt; xsl: प्रत्येक चयन = "बीबी [जेनरेट-आईडी () = जेनरेट-आईडी (कुंजी ('नेम डिस्टिक्ट', बीटी 2) [../@Aattr = current () / @ एटट्र] [1])] "& gt; & Lt; xsl: मान का चयन करें = "@ बीएटीआर 2" / & gt; & Lt; / XSL: के लिए-प्रत्येक & gt; & Lt; / XSL: के लिए-प्रत्येक & gt; & Lt; / XSL: टेम्पलेट & gt;
Comments
Post a Comment