2011-02-07 13 views
22

में कोई विशेषता मौजूद है या नहीं, यह पता लगाने के लिए कि एक्सएसएल में कोई विशेषता मौजूद है या नहीं। सशर्त निर्देश की संख्या एक अच्छी तरह से लिखा XSLT कोड (जैसे कि <xsl:choose>, <xsl:when>, <xsl:otherwise>, <xsl:if> ...:एक्सएसएल

+2

संबंधित कुछ तत्व का चयन: http://stackoverflow.com/questions/4146648/how-to-check-if-an- विशेषता-मौजूद-इन-ए-एक्सएमएल-फाइल-उपयोग-xsl – Adnan

उत्तर

19
<xsl:choose> 
    <xsl:when test="element/@attribute"> 
    do one thing 
    </xsl:when> 
    <xsl:otherwise> 
    do something else 
    </xsl:otherwise> 
</xsl:choose> 
+2

सही है, यह मानते हुए कि संदर्भ नोड प्रश्न में तत्व के पैरेंट पर स्थित है। (मुझे संदेह होगा कि यदि पोस्टर को इस क्षेत्र में कठिनाई हो रही है, तो उन्होंने XSLT में संदर्भ के तरीके को अभी तक नहीं पकड़ा है।) –

26

बस का उपयोग करें:

<xsl:template match="someElement/@someAttrName"> 
    <!-- Whatever specific work when someElement has @someAttrName --> 
</xsl:template> 

<xsl:template match="someElement[not(@someAttrName)]"> 
    <!-- Whatever specific work when someElement has no @someAttrName --> 
</xsl:template> 

ध्यान दें करो आदि) शून्य के करीब है। इस समाधान में यह 0.

+1

+1 बेहतर उत्तर। –

+1

एक बेहतर उत्तर के लिए +1 सहमत –

+0

यदि "कुछ एलीमेंट" से मेल खाने वाले एक ही काम की कई पंक्तियां थीं, तो आप बिना किसी अनावश्यकता के कैसे कार्यान्वित करेंगे। मैं इस समाधान का उपयोग कर रहा हूं, लेकिन केवल एक पंक्ति है जो मेरे दो टेम्पलेट्स और कई समान हैं जो सटीक हैं। – Bryant

1
<xsl:value-of select="element[not(@attribute)]"/> 

है अगर जरूरत विशेषता के बिना

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