xslt - XSL unique value key -


लक्ष्य

(XSLT 1.0)। मेरा लक्ष्य तत्वों का एक सेट लेना है, और एक और सेट का निर्माण करना है, टी, जहां टी में एस में अनूठे तत्व शामिल हैं और जितना संभव हो उतना कुशलता से ऐसा करने के लिए। (ध्यान दें: मुझे एक वैरिएबल सेट नहीं करना पड़ता है जो कि सेट, या ऐसा कुछ भी शामिल है। मुझे सिर्फ उन तत्वों पर लूप की आवश्यकता है जो अद्वितीय हैं)।

उदाहरण इनपुट और कुंजी

  & lt;! - मेरे वास्तविक इनपुट में & lt; परिणाम & gt; तत्व - & gt; & LT; AllMyResults & gt; & LT; परिणाम & gt; & LT; someElement & gt; मूल्य & lt; / राज्य & gt; & Lt; अन्य एलेमेंट & gt; मूल्य 2 & lt; / state & gt; & Lt; subject & gt; अद्वितीय विषय प्राप्त करें! & Lt; / state & gt; & Lt; / परिणाम & gt; & Lt; / AllMyResults & gt; & Lt; xsl: कुंजी नाम = "विषयकै" मैच = "सभी माइय परिणाम / परिणाम" = "विषय" / & gt; का उपयोग करें   

मुझे लगता है कि ऊपर के काम करता है, लेकिन जब मैं अपनी चाबी का उपयोग करने जा रहा हूं, तो यह अविश्वसनीय रूप से धीमा है। नीचे मैं अपनी कुंजी का उपयोग कैसे करता हूं यह कोड है।

  & lt; xsl: प्रत्येक-चयन = "परिणाम [गणना (। | Key ('SubjectKey', विषय) [1]) = 1] "& gt; & Lt; xsl: सॉर्ट करें = "विषय" / & gt; & Lt;! - अद्वितीय विषय मूल्य के साथ कुछ करो - & gt; & Lt; xsl: मान का चयन करें = "विषय" / & gt; & Lt; / XSL: के लिए-प्रत्येक & gt;   अतिरिक्त जानकारी   

मेरा मानना ​​है कि मैं यह गलत कर रहा हूं क्योंकि यह मेरी एक्सएसएल को बहुत धीमा कर दिया कुछ अतिरिक्त जानकारी के रूप में, ऊपर दिखाए गए कोड मेरी मुख्य XSL फ़ाइल से एक अलग XSL फाइल में है। मुख्य XSL से, मैं एक टेम्पलेट कह रहा हूँ जिसमें एक्सएसएल: कुंजी और उपर्युक्त प्रत्येक के लिए। इस टेम्पलेट में इनपुट एक एक्सएसएल: परम है जिसमें मेरे नोड-सेट (ऊपर दिखाए गए उदाहरण इनपुट के समान) है।

विषय) [1]) = 1 P> के साथ :
  उत्पन्न- id () = जनरेट-आईडी (कुंजी ('विषयक', विषय) [1])    

Comments