2008-09-18 15 views
11

मैं कुछ xlst फ़ाइल लिख रहा हूं जिसे मैं लिनक्स और विंडोज के तहत उपयोग करना चाहता हूं। इस फ़ाइल में मैं नोड-सेट फ़ंक्शन का उपयोग करता हूं जो MSXML और xsltproc ("urn: schemas-microsoft-com: xslt" और "http://exslt.org/common" क्रमशः क्रमशः विभिन्न नामस्थानों में घोषित किया गया है)। क्या नोड-सेट का उपयोग करने का कोई मंच स्वतंत्र तरीका है?मंच-स्वतंत्र तरीके से नोड-सेट फ़ंक्शन का उपयोग कैसे करें?

+0

हाय Евгений, मेरा उत्तर देखें जो xxx: node-set() फ़ंक्शन के एक सार्वभौमिक कार्यान्वयन के लिए आवश्यक जानकारी प्रदान करता है। चियर्स –

उत्तर

1

फ़ायरफ़ॉक्स 3 क्लाइंट-साइड एक्सएसएलटी प्रसंस्करण में नोड-सेट (EXSLT 2.0 नामस्थान सुधार के हिस्से के रूप में) लागू करता है।

हो सकता है कि आप जो उत्तर खोज रहे थे वह शायद नहीं - लेकिन यह आपकी समस्या के संदर्भ के आधार पर हो सकता है।

<xsl:choose> 
    <xsl:when test="function-available('exslt:node-set')"> 
    <xsl:apply-templates select="exslt:node-set($nodelist)" /> 
    </xsl:when> 
    <xsl:when test="function-available('msxsl:node-set')"> 
    <xsl:apply-templates select="msxsl:node-set($nodelist)" /> 
    </xsl:when> 
    <!-- etc --> 
</xsl:choose> 

तुम भी एक नामित टेम्पलेट में इस तर्क लपेट और एक के रूप में nodeset से कॉल करने की कर सकते हैं: ;-)

7

आप समारोह समारोह से उपलब्ध() निर्धारित करने के लिए जो कार्य करते हैं आप का उपयोग करना चाहिए उपयोग कर सकते हैं पैरामीटर।

3

Exslt "xslt एक्सटेंशन का एक प्लेटफॉर्म-स्वतंत्र सेट" होना चाहिए, लेकिन केवल तब तक जब तक विभिन्न xslt प्रोसेसर उन्हें लागू करना चुनते हैं।

some evidence है कि MSXML वास्तव में exsl: node-set() का समर्थन करता है, लेकिन मुझे निश्चित रूप से पता नहीं है।

एक old article एमएसएक्सएमएल के शीर्ष पर an implementation पर चर्चा के बारे में चर्चा कर रहा है।

अन्यथा, मुझे लगता है कि समारोह से उपलब्ध() अपने दोस्त :)

0

है अगर वहाँ implemenation शामिल करके की खिड़कियों पर नोड सेट आप हर जगह exslt एक का उपयोग coul, msxml कार्यान्वयन उपयोग करने के लिए एक विशेष कारण नहीं है http://exslt.org से आपकी स्टाइलशीट के साथ डाउनलोड किया गया, exslt howto आवश्यक चरणों का वर्णन करता है। आप या तो "एक्सटेंशन नेमस्पेस" या "नामांकित टेम्पलेट्स" तरीके का उपयोग कर सकते हैं।

7

हां, एक अच्छा और सार्वभौमिक समाधान है।

EXSLT का फ़ंक्शन common:node-set() इनलाइन जावास्क्रिप्ट फ़ंक्शन के रूप में कार्यान्वित किया जा सकता है और इस प्रकार जावास्क्रिप्ट का समर्थन करने वाले किसी भी ब्राउज़र के साथ उपलब्ध है (वास्तव में अपवाद के बिना सभी प्रमुख ब्राउज़रों)।

इस तकनीक को पहली बार Julian Reschke द्वारा खोजा गया था और इसे xsl-list पर प्रकाशित करने के बाद, David Carlisle द्वारा प्रचारित किया गया था। blog of David Carlisle पर एक परीक्षण पृष्ठ का एक लिंक भी है जो दिखाता है कि सामान्य: नोड-सेट() फ़ंक्शन इस प्रकार कार्यान्वित किया गया है जो आपकी पसंद के ब्राउज़र के साथ काम करता है।

संक्षेप में:

  1. पहले here जाने के लिए और विवरण पढ़ें।
  2. फिर परीक्षण पृष्ठ आज़माएं। विशेष रूप से, सत्यापित करें कि यह आईई के साथ काम करता है (जिसका मतलब है एमएसएक्सएमएल के साथ)
  3. अंत में, कोड का उपयोग करें।

आनंद लें!