2009-12-07 15 views
8

मुझे <apply-templates> के बजाय <copy-of> का उपयोग कब करना चाहिए?एक्सएसएलटी: <copy-of> और <लागू-टेम्पलेट्स> के बीच क्या अंतर है?

उनकी अनूठी भूमिका क्या है? <apply-templates> को <copy-of> के साथ बदलकर अधिकांश समय अजीब आउटपुट देता है। ऐसा क्यों है?

उत्तर

12
  • xsl:copy-of मिलान किया इनपुट एक्सएमएल तत्व के एक सटीक प्रतिलिपि है। कोई xslt प्रसंस्करण नहीं होता है और उस तत्व का आउटपुट इनपुट के समान ही होगा।

  • xsl:apply-templates टेम्पलेट्स कि चयनित तत्वों से मेल खाते हैं पर कार्रवाई करने के xslt इंजन बताता है। xsl:apply-templates जो xslt को इसकी ओवरराइडिंग क्षमता देता है, क्योंकि तत्वों पर मिलान के साथ बनाए गए टेम्पलेट्स में अलग-अलग प्राथमिकताएं हो सकती हैं, और उच्चतम प्राथमिकता वाले टेम्पलेट को निष्पादित किया जाएगा।

इनपुट:

<a> 
    <b>asdf</b> 
    <b title="asdf">asdf</b> 
</a> 

XSLT 1:

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

XML आउटपुट 1:

<b>asdf</b> 
<b title="asdf">asdf</b> 

XSLT 2:

<xsl:stylesheet ... > 
    <xsl:template match="a"> 
     <xsl:apply-templates select="b" /> 
    </xsl:template> 

    <xsl:template match="b" priority="0"> 
     <b><xsl:value-of select="." /></b> 
     <c><xsl:value-of select="." /></c> 
    </xsl:template> 

    <xsl:template match="b[@title='asdf']" priority="1"> 
     <b title="{@title}"><xsl:value-of select="@title" /></b> 
    </xsl:template> 
</xsl:stylesheet> 

XML आउटपुट 2:

<b>asdf</b> 
<c>asdf</c> 
<b title="asdf">asdf</b> 
7
copy-of 

बस आप में XML का एक डंप वापस आ जाएगी आपूर्ति नोड सेट दूसरी ओर

apply-templates 

किसी खाके को नोड सेट इसे पारित लागू लागू होगी।

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