<xsl:sequence>
परमाणु मूल्य (या परमाणु मूल्यों का अनुक्रम) पर <xsl:copy-of>
दोनों ही उनके इनपुट की एक प्रति वापस लौटते हैं। अंतर तब आता है जब आप नोड्स पर विचार करते हैं।
रूप
<xsl:variable name="n" select="/html"/>
की तरह कुछ से परिभाषित किया गया है, तो $ n एक भी तत्व नोड, जैसे है तो
<xsl:copy-of select="$n"/>
नोड के प्रतिलिपि रिटर्न, यह एक ही नाम और बच्चा है संरचना लेकिन यह एक नई पहचान (और कोई अभिभावक) के साथ नया नोड है।
<xsl:sequence select="$n"/>
रिटर्न नोड $ एन, नोड लौटे $ n के रूप में एक ही मूल है और is
Xpath ऑपरेटर द्वारा इसे करने के लिए बराबर है।
अंतर लगभग पूरी तरह से पारंपरिक (XSLT 1 शैली) टेम्पलेट के उपयोग में छिपा होता है के रूप में आप कभी नहीं या तो आपरेशन निर्माता का परिणाम परोक्ष तथ्य तो उत्पादन पेड़ को कॉपी किया है का परिणाम तक पहुँच प्राप्त है कि नहीं करता है xsl:sequence
एक प्रतिलिपि बनाने के लिए मुखौटा नहीं है।
<xsl:template match="a">
<x>
<xsl:sequence select="$n"/>
</x>
</xsl:template>
रूप
<xsl:template match="a">
<x>
<xsl:copy-of select="$n"/>
</x>
</xsl:template>
ही दोनों एक नए तत्व नोड बनाने के लिए और कॉपी नए नोड x
के बच्चों के रूप में सामग्री का परिणाम है।
हालांकि यदि आप फ़ंक्शंस का उपयोग करते हैं तो अंतर तुरंत देखा जाता है।
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:f="data:,f">
<xsl:variable name="s">
<x>hello</x>
</xsl:variable>
<xsl:template name="main">
::
:: <xsl:value-of select="$s/x is f:s($s/x)"/>
:: <xsl:value-of select="$s/x is f:c($s/x)"/>
::
:: <xsl:value-of select="count(f:s($s/x)/..)"/>
:: <xsl:value-of select="count(f:c($s/x)/..)"/>
::
</xsl:template>
<xsl:function name="f:s">
<xsl:param name="x"/>
<xsl:sequence select="$x"/>
</xsl:function>
<xsl:function name="f:c">
<xsl:param name="x"/>
<xsl:copy-of select="$x"/>
</xsl:function>
</xsl:stylesheet>
उत्पादन
$ saxon9 -it main seq.xsl
<?xml version="1.0" encoding="UTF-8"?>
::
:: true
:: false
::
:: 1
:: 0
::
यहाँ xsl:sequence
और xsl:copy-of
के परिणाम बिल्कुल भिन्न हैं।
दूसरे उदाहरण में, इसका मतलब है xsl: अनुक्रम प्रदर्शन के लिए बेहतर है? फिर, xsl पर अनुक्रम का लाभ क्या है: अनुक्रम? – user3813234
मुझे संदेह है कि बहुत कम मामले हैं जहां आपको वास्तव में xsl की आवश्यकता है: प्रतिलिपि। जब तक आप सत्यापन = सख्त या प्रति-नामस्थान = नहीं, शायद उपयोग करते हैं। अधिकांश मामलों में xsl का उपयोग करते हुए: xsl की बजाय प्रतिलिपि: अनुक्रम हानिरहित होगा लेकिन निश्चित रूप से कुछ ऐसे मामले हैं जहां यह अनावश्यक और महंगी प्रतिलिपि का कारण बन सकता है जब तक कि अनुकूलक इसे रोकने के लिए पर्याप्त स्मार्ट न हो। लेकिन उपर्युक्त उदाहरण में, दोनों बराबर नहीं हैं: $ x/.. यदि आप प्रतियां बनाते हैं तो कुछ भी नहीं लौटाता है, लेकिन मूल नोड्स के माता-पिता को वापस लौटाता है यदि आप उन्हें xsl: अनुक्रम के साथ चुनते हैं। –
आह मैं देखता हूं। आपका बहुत बहुत धन्यवाद! – user3813234