मैं XSLT के लिए पूरी तरह से नया हूं और मैं निम्नलिखित कोड के साथ गलत काम नहीं कर सकता हूं।
<xsl:variable name="var" select="boolean('false')"/>
<xsl:if test="$var'">variable is true</xsl:if>
यह हमेशा सच है जब यह गलत होने का मतलब है। क्यों?
मैं XSLT के लिए पूरी तरह से नया हूं और मैं निम्नलिखित कोड के साथ गलत काम नहीं कर सकता हूं।
<xsl:variable name="var" select="boolean('false')"/>
<xsl:if test="$var'">variable is true</xsl:if>
यह हमेशा सच है जब यह गलत होने का मतलब है। क्यों?
जवाबों:
में परिभाषित के रूप में $ चर चर का मूल्य:
<xsl:variable name="var" select="boolean('false')"/>
है
true()
ऐसा इसलिए है क्योंकि XPath " false
" एक साधारण स्ट्रिंग है, जैसा कि विरोध किया गया है false()
, जो boolean
मूल्य के लिए निर्माता हैfalse()
XPath में दो बूलियन मान हैं (ध्यान दें कि वे निर्मित हैं!):
true()
तथा false()
बूलियन के लिए किसी भी मूल्य को परिवर्तित करने के विवरण को XPath कल्पना से बाहर रखा गया है । "
" बूलियन फ़ंक्शन अपने तर्क को बूलियन के रूप में परिवर्तित करता है:
एक संख्या सच है अगर और केवल अगर यह न तो सकारात्मक या नकारात्मक शून्य है और न ही NaN
नोड-सेट सत्य है यदि और केवल यदि यह गैर-रिक्त है
एक स्ट्रिंग सच है अगर और केवल अगर इसकी लंबाई गैर-शून्य है
चार मूल प्रकारों के अलावा अन्य प्रकार की एक वस्तु एक प्रकार से बूलियन में बदल जाती है जो उस प्रकार पर निर्भर होती है "
आपके मामले में स्ट्रिंग "झूठी" संख्या 0 नहीं है और एक सकारात्मक लंबाई है, इसलिए ऊपर दी गई 3 गोली में नियम लागू होता है, उपज true()
।
इसलिए, XSLT 1.0 में एक चर को परिभाषित करने के लिए, जिसका मूल्य है false()
, एक को निम्नलिखित के रूप में परिभाषा लिखने की आवश्यकता है:
<xsl:variable name="vMyVar" select="false()"/>
या, यदि आपको यह ठीक से याद नहीं है, तो आप हमेशा लिख सकते हैं:
<xsl:variable name="vMyVar" select="1 = 0"/>
(जो भी मूल्यांकन करता है उसे निर्दिष्ट करें false()
) और XSLT प्रोसेसर आपके लिए काम करेगा।
XSLT 2.0 में हमेशा चर के प्रकार को स्पष्ट रूप से निर्दिष्ट करना बेहतर होता है :
<xsl:variable name="vMyVar" as="xs:boolean" select="false()"/>
false
और true
तार से परिवर्तन आ रहा है कि स्ट्रिंग तुलना शामिल नहीं है?
बूलियन () फ़ंक्शन आप उपयोग कर रहे हैं वास्तव में यह काम कर रहा है। स्पष्ट सच्चे और झूठे मूल्यों का उपयोग करने के लिए आपको निम्नलिखित कार्यों का उपयोग करना चाहिए:
<xsl:variable name="var_false" select="false()"/>
<xsl:variable name="var_true" select="true()"/>
MSDN प्रलेखन के अनुसार, बस FYI करें, बूलियन () निम्नलिखित लौटाता है:
इस स्तर पर शायद थोड़ी देर हो सकती है लेकिन बूलियंस से निपटने के लिए सिर्फ प्रयास के लायक नहीं है। मैं कैसे एक बूलियन (अनिवार्य) डीबी से वापस आने से निपटा:
<xsl:variable name="vTrue" select="true()"/>
<xsl:choose>
<xsl:when test="string(Mandatory) = string($vTrue)">
<xsl:text>Mandatory</xsl:text>
</xsl:when>
<xsl:otherwise>
</xsl:otherwise>
</xsl:choose>
आशा है कि यह किसी की मदद करता है