2008-12-15 17 views
21

मैं xml दस्तावेज़ में रूट तत्व के टैग नाम को xslt चर में निर्दिष्ट करने में रूचि रखता हूं। उदाहरण के लिए, यदि दस्तावेज़ की तरह दिखाई देता (ऋण DTD):किसी XML दस्तावेज़ w/XSLT में रूट तत्व का टैग नाम कैसे प्राप्त करें?

<foo xmlns="http://....."> 
    <bar>1</bar> 
</foo> 

और मैं एक xslt चर करने के लिए स्ट्रिंग 'foo' आवंटित करने के लिए करना चाहता था। क्या इसका संदर्भ देने का कोई तरीका है?

धन्यवाद, मैट

उत्तर

23

मुझे लगता है कि आप बाहरीतम XML तत्व का नाम पुनर्प्राप्त करना चाहते हैं। यह निम्न XSL नमूने में की तरह किया जा सकता है:

<?xml version="1.0" encoding="UTF-8" ?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

    <xsl:variable name="outermostElementName" select="name(/*)" /> 

    <xsl:template match="/"> 
    <xsl:value-of select="$outermostElementName"/> 
    </xsl:template> 
</xsl:stylesheet> 

कृपया ध्यान दें कि XPath शब्दावली में मामूली अंतर यह है कि:

पेड़ के शीर्ष एक रूट नोड (1.0 शब्दावली) है या दस्तावेज़ नोड (2.0)। यह "/" का अर्थ है। यह तत्व नहीं है: यह बाहरीतम तत्व के पैरेंट (और टिप्पणियां और प्रसंस्करण निर्देश है जो बाहरी तत्व से पहले या उसका पालन करता है)। रूट नोड का कोई नाम नहीं है।

देखें http://www.dpawson.co.uk/xsl/sect2/root.html#d9799e301

2

इसे समझ लिया गया। फ़ंक्शन नाम() पैरामीटर दिया गया * foo वापस करेगा।

0

आप local-name()

+1

@annakata: name() और स्थानीय-नाम() भिन्न हैं। ओपी स्पष्ट रूप से नाम चाहता है()। कहीं भी वह कहता है कि वह चाहता है कि नाम किसी भी नामस्थान उपसर्ग को छीन ले। –

+0

निष्पक्ष होने का मेरा मतलब है "यह वही करेगा जो आप चाहते हैं" नहीं "केवल यह ..." और ओपी में कहीं भी यह नहीं कहता कि वह नामस्थान चाहता है। मैं तुम्हारे बारे में नहीं जानता लेकिन मेरे अनुभव में स्थानीय नाम वह है जो मुझे 9 0% समय में रूचि है। नामस्थान एक कारण हैं जो लोग एक्सएसएलटी से नफरत करते हैं – annakata

16

XPath name() फ़ंक्शन का उपयोग करना चाहते हैं।

एक XPath अभिव्यक्ति शीर्ष के नाम प्राप्त करने के लिए (जड़ नहीं है!) तत्व है:

              name(/*)

नाम() फ़ंक्शन पूरी तरह से योग्य नोड का नाम, इसलिए तत्व <bar:foo/> स्ट्रिंग "बार: foo" को वापस कर दिया जाएगा।

यदि नाम का केवल स्थानीय भाग चाहता था (कोई उपसर्ग और ":"), तो XPath local-name() फ़ंक्शन का उपयोग किया जाना चाहिए।

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