यहाँ मिलान (XSLT में 2.0 मैचों() pattern
तर्क के रूप में एक असली RegEx के साथ उपयोग समारोह) की सही XSLT 1.0 तरीका है:
एक तत्व जिसका नाम मिलान शामिल 'line'
:
<xsl:template match="*[contains(name(), 'line')]">
<!-- Whatever processing is necessary -->
</xsl:template>
एक तत्व जिसका नाम समाप्त होता है मिलान 'line'
में:
<xsl:template match="*[substring(name(), string-length() -3) = 'line']">
<!-- Whatever processing is necessary -->
</xsl:template>
@Tomalak दिए गए स्ट्रिंग के साथ समाप्त होने वाले नाम ढूंढने का एक और XSLT 1.0 तरीका प्रदान किया गया। उनका समाधान एक विशेष चरित्र का उपयोग करता है जिसे किसी भी नाम पर कभी भी मौजूद नहीं होने की गारंटी दी जाती है। मेरा समाधान यह पता लगाने के लिए लागू किया जा सकता है कि क्या कोई स्ट्रिंग (केवल तत्व का नाम नहीं) किसी अन्य स्ट्रिंग के साथ समाप्त होता है।
एक्सएसएलटी 2 में।एक्स:
उपयोग:
: matches(name(), '.*line$')
ऐसे नाम हैं जो स्ट्रिंग "line"
यह परिवर्तन के साथ समाप्त मैच के लिए
जब थीस XML दस्तावेज़ पर लागू: उत्पादन केवल तत्व को
<greeting>
<aaa>Hello</aaa>
<bblineb>Good</bblineb>
<ccc>Excellent</ccc>
<dddline>Line</dddline>
</greeting>
प्रतियां, जिसका नाम स्ट्रिंग "line"
साथ समाप्त होता है:
<dddline>Line</dddline>
जबकि यह परिवर्तन (का उपयोग करता है 10): उत्पादन सभी तत्वों, जिनके नाम स्ट्रिंग "line"
को रोकने के लिए
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="*[matches(name(), '.*line')]">
<xsl:copy-of select="."/>
</xsl:template>
<xsl:template match="*[not(matches(name(), '.*line'))]">
<xsl:apply-templates select="node()[not(self::text())]"/>
</xsl:template>
</xsl:stylesheet>
प्रतियां:
<bblineb>Good</bblineb>
<dddline>Line</dddline>
अगली बार
, बस पाठ बॉक्स है, जहां यह कहते हैं बगल में स्थित बॉक्स पढ़ें * " प्रारूप कैसे करें: इंडेंट कोड 4 रिक्त स्थान "*। तो आपको '<' आदि का उपयोग करने की आवश्यकता नहीं है ... –
अच्छा प्रश्न (+1)। मेरा जवाब देखें, इस समय आपके दो संबंधित प्रश्नों का एकमात्र सही समाधान है। :) –