/ / Xslt में रूट नोड के बारे में - xml, xslt

Xslt में रूट नोड के बारे में - xml, xslt

मैं xslt में नया हूं।

कृपया नीचे दिए गए मामलों को देखें:

इनपुट:

<?xml version="1.0"?>
<Hello>
<hi>
<hii>
shashi
</hii>
</hi>
</Hello>

मामला एक :

Xslt कोड:

 <xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
<xsl:copy-of select="."/>
</xsl:template>

</xsl:stylesheet>

केस 1 के लिए आउटपुट:

<?xml version="1.0"?>
<Hello>
<hi>
<hii>
shashi
</hii>
</hi>
</Hello>

केस 2:

Xslt कोड:

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
<xsl:copy-of select="./hi"/>
</xsl:template>
</xsl:stylesheet>

मामले 2 में कोई आउटपुट नहीं दिखाया गया है। मुझे क्यों नहीं मिल रहा है?

<xsl:template match="/">

जब यह रूट नोड को इंगित करता है, जो हैलो 1। तो 1 मामले में जब यह निष्पादित होता है

<xsl:copy-of select="."/>

इससे पूरा xml प्रिंट हो जाएगा।

मामले में 2: जब यह निष्पादित होता है

<xsl:copy-of select="./hi"/>

इसे नीचे प्रिंट करना चाहिए।

<hi>
<hii>
shashi
</hii>
</hi>

किसी कृपया इस पर मदद कर सकते हैं?

धन्यवाद, शशिराज एन.के.

उत्तर:

जवाब के लिए 2 № 1

आपको यहां शब्दावली में बदलाव के बारे में पता होना चाहिए। मेरे द्वारा ज्ञात सभी ट्री मॉडल में, दो प्रासंगिक नोड हैं: एक तत्व का प्रतिनिधित्व करता है Hello (जिसे मैं "सबसे बाहरी तत्व" कहता हूं, उम्मीद है कि भ्रम से बचने के लिए), साथ ही इसके माता-पिता, जो दस्तावेज़ को एक पूरे के रूप में दर्शाते हैं: फिलहाल "कंटेनर" को कॉल करें।

XML विनिर्देशन स्वयं एक ट्री मॉडल को परिभाषित नहीं करता है, लेकिन यह कहता है "वास्तव में एक तत्व है, जिसे रूट या दस्तावेज़ तत्व कहा जाता है" - जो बहुत भ्रम का स्रोत है।

DOM कंटेनर को डॉक्यूमेंट नोड कहता है (या,केवल जटिलताओं को जोड़ने के लिए, इस मामले में एक डॉक्यूमेंटफ्रेगमेंट जहां यह एक बाहरी तत्व के साथ एक अच्छी तरह से गठित दस्तावेज़ नहीं है)। और यह सबसे बाहरी तत्व को "दस्तावेज़ तत्व" कहता है - जिसमें कम से कम शब्दावली के मिलान की योग्यता है। XML विनिर्देशन।

XPath 1.0 में (और इसलिए XSLT 1)।0), कंटेनर को "रूट नोड" कहा जाता है, और युक्ति बाहरी तत्व के लिए "डॉक्यूमेंट एलिमेंट" शब्द का उपयोग करता है, हालांकि यह बहुत महत्वपूर्ण भूमिका नहीं निभाता है, मोटे तौर पर क्योंकि मॉडल डॉक्यूमेंट नोड्स का समर्थन करता है जिसमें कई तत्व बच्चे होते हैं। ।

XPath 2.0 में (और XSLT 2)।०) आप ऐसे पेड़ों का निर्माण कर सकते हैं जिनमें पेड़ की जड़ किसी भी प्रकार की हो सकती है, उदाहरण के लिए आपके पास बिना माता-पिता के साथ एक तत्व हो सकता है। इसलिए शब्दावली में एक परिवर्तन है: "रूट" अब एक नोड (किसी भी प्रकार का) का कोई माता-पिता नहीं है, जबकि मैंने "कंटेनर" को एक दस्तावेज के रूप में प्रस्तुत किया है, जिसे अब "दस्तावेज़ नोड" कहा जाता है।

लेकिन चाहे आप XPath 1.0 या 2.0 का उपयोग कर रहे हों, /* मेल खाता है Hello तत्व, और / इसके मूल नोड से मेल खाता है, जो पेड़ की जड़ है।


उत्तर № 2 के लिए 1

/ रूट नोड का चयन करता है जो अन्य सभी नोड्स वाले दस्तावेज़ नोड है। मूल तत्व द्वारा चुना जाता है /*.