एक स्टाइलशीट के लिए मैं लिख रहा हूं (वास्तव में उनमें से एक सेट के लिए, प्रत्येक एक अलग आउटपुट प्रारूप उत्पन्न करता है), मुझे मूल्यांकन करने की आवश्यकता है कि मूल्यों की सूची में कोई निश्चित मान मौजूद है या नहीं। इस मामले में, परीक्षण किया जा रहा मूल्य तत्व के गुण से लिया जाता है। जिस सूची में इसका परीक्षण किया जाना है, वह स्टाइलशीट के आविष्कार से आता है, और इसे शीर्ष-स्तर <xsl:param>
के रूप में लिया जाता है (जब मैं xsltproc
या सैक्सन समकक्ष आमंत्रण कहता हूं तो कमांड लाइन पर प्रदान किया जाना चाहिए)। उदाहरण के लिए, इनपुट मूल्य हो सकता है:एलिमेंट-इन-लिस्ट परीक्षण
v0_01,v0_10,v0_99
जबकि विशेषता मान प्रत्येक एक इस तरह के मूल्य की तरह बहुत ज्यादा दिखेगा। (चाहे मूल्यों या स्पेस को अलग करने के लिए कॉमा का उपयोग किया जाए, महत्वपूर्ण नहीं है - मैंने अभी के लिए कॉमा चुना है क्योंकि मैं कमांड लाइन स्विच के माध्यम से xsltproc
पर मूल्य पारित करने की योजना बना रहा हूं, और एक स्पेस का उपयोग करने से तर्क को उद्धृत करने की आवश्यकता होगी, और मैं आलसी हूं- अतिरिक्त दो अक्षर टाइप नहीं करना चाहता हूं।)
जो मैं खोज रहा हूं वह पर्ल के grep
जैसा कुछ है, जिसमें मैं देख सकता हूं कि वर्तमान में मेरे पास मौजूद मूल्य में मौजूद है या नहीं। यह उप-स्ट्रिंग परीक्षणों के साथ किया जा सकता है, लेकिन यह चालाक होना चाहिए ताकि झूठी-सकारात्मक न हो (v0_01
v0_011
वाली स्ट्रिंग से मेल नहीं खाएं)। ऐसा लगता है कि एक्सएसएल/एक्सएसएलटी का समर्थन करने वाला एकमात्र गैर-स्केलर डेटा-प्रकार एक नोड-सेट है। मुझे लगता है कि सूची को टेक्स्ट नोड्स के एक सेट में परिवर्तित करना संभव है, लेकिन यह अतिरिक्त सीमाओं के साथ उप-स्ट्रिंग परीक्षण करने की तुलना में अधिक-हत्या की तरह लगता है-झूठी मैचों को रोकने के लिए जांच।
असल की सूची में शामिल है
exists(tokenize($list, ',')[. = $value])
true()
का आकलन करती है, मेरे प्रयोजनों के लिए, ऐसा लगता है कि "शामिल" फ़ंक्शन करेगा (आपके द्वारा सुझाए गए पैडिंग का उपयोग करके)। मुझे क्या ट्रिप किया गया था, यह था कि मैं एक्सएसएलटी के भीतर ही इस कार्यक्षमता की तलाश कर रहा था, जब मुझे XPath में देखना चाहिए था। – rjrayइसमें शामिल() फ़ंक्शन जोड़ा गया है, जो कि मुझसे बच निकला था। धन्यवाद। :-) – Tomalak
@ टोमालक: सबस्ट्रिंग-पहले() अभिव्यक्ति का मूल्यांकन '' 'होगा, भले ही मूल्य सूची में निहित है (जब यह पहला मान है)। इसी प्रकार, सबस्ट्रिंग-बाद() अभिव्यक्ति "'का मूल्यांकन करती है जब मूल्य सूची में अंतिम होता है। इसलिए, केवल शामिल है() अभिव्यक्ति सही है –