2009-08-21 11 views
7

मेरे पास एक एक्सएसएलटी फ़ंक्शन है जो जांचता है कि भेजा गया पैरामीटर YYYYMMDD प्रारूप में है या नहीं। कुछ स्थितियों में मैं समारोह के लिए किसी भी मूल्य नहीं मिल रहा है, इन परिस्थितियों के सैक्सन त्रुटिएक्सएसएलटी फ़ंक्शन में खाली अनुक्रम को संभालना

नीचे फेंकने के दौरान "एक खाली अनुक्रम सीडीए के पहले तर्क के रूप में अनुमति नहीं है: isValidDate()"

कोई भी सुझाव इस स्थिति को कैसे संभालना है?

उत्तर

12

एक्सएसएलटी में कोई शून्य मूल्य नहीं है। अनुपलब्ध मान का प्रतिनिधित्व करने के लिए, आप शून्य लंबाई स्ट्रिंग या रिक्त अनुक्रम का उपयोग कर सकते हैं। वे एक ही बात नहीं हैं - एक खाली अनुक्रम गिनती से $ 0 ($ x) लौटाएगा, लेकिन शून्य लंबाई स्ट्रिंग एक अनुक्रम है जिसमें एक प्रकार का xs है: स्ट्रिंग जिसमें 0 की स्ट्रिंग लम्बाई है (गिनती ($ x) = 1 और स्ट्रिंग-लम्बाई ($ x) = 0)।

अधिकांश मानक XPath फ़ंक्शन या तो शून्य लंबाई स्ट्रिंग या खाली अनुक्रम स्वीकार करते हैं लेकिन आपका कस्टम फ़ंक्शन नहीं हो सकता है।

यदि आप वर्णों की सीमा चुन रहे हैं तो समस्या हो सकती है। उदाहरण के लिए, यदि आप नोड्स के मान का चयन करते हैं जिसमें नोड मौजूद नहीं है, तो आपको खाली अनुक्रम मिलेगा - लेकिन यदि नोड मौजूद है और मान खाली है, तो आपको खाली-स्ट्रिंग मिल जाएगी।

खाली स्ट्रिंग रखने के लिए मूल्य का चयन करने के तरीके को संशोधित करें (या खाली-अनुक्रम स्वीकार करने के लिए isValidDate फ़ंक्शन को लपेटें/बदलें)। निम्न फ़ंक्शन निश्चित रिक्त अनुक्रम स्वीकार करेगा और इसे शून्य लंबाई स्ट्रिंग में परिवर्तित करेगा

<xsl:function name="cda:isValidDate" as="xs:boolean"> 
    <xsl:param name="datestring" as="xs:string?"/> 
    <xsl:variable name="reallyastring" select="string($datestring)"/> 
    Your code 
</xsl:function> 

? एक्सएस पर: स्ट्रिंग? परम प्रकार एक या कोई आइटम प्रदान करने की अनुमति देता है। स्ट्रिंग (...) फ़ंक्शन कभी खाली स्ट्रिंग नहीं देता है, इसलिए खाली अनुक्रम को शून्य लंबाई स्ट्रिंग में परिवर्तित कर देगा।

+1

या उस पर फ़ंक्शन कॉल करने से पहले अनुक्रम खाली है ('गिनती() = 0') जांचने के लिए' xs: select' का उपयोग करें। –

+0

खाली अनुक्रम स्वीकार करने के लिए मैं अपना कार्य कैसे घोषित कर सकता हूं? क्या इसके लिए कोई डेटा प्रकार है? –

+0

खाली अनुक्रम को स्वीकार करने और शून्य लंबाई स्ट्रिंग में कनवर्ट करने के तरीके को दिखाने के लिए उत्तर अपडेट किया है। –

संबंधित मुद्दे