2012-08-22 25 views
18

इन दो टेम्पलेट्स के बीच क्या अंतर है?अंतर

<xsl:template match="node()"> 

<xsl:template match="*"> 
+0

यह जवाब भी लागू होता है: http://stackoverflow.com/questions/5394178/difference-between-childnode-and-child – StuartLC

उत्तर

30
<xsl:template match="node()"> 

के लिए एक संक्षिप्त नाम है

  • तत्व

  • पाठ नोड

  • प्रसंस्करण-निर्देश (पीआई) नोड

  • टिप्पणी नोड।

दूसरी तरफ पर:

<xsl:template match="child::*"> 

यह किसी भी तत्व मेल खाता है:

<xsl:template match="*"> 

के लिए एक संक्षिप्त नाम है।

XPath अभिव्यक्ति: someAxis :: * दिया अक्ष के लिए प्राथमिक नोड प्रकार के किसी भी नोड मेल खाता है।

child:: धुरी के लिए प्राथमिक नोड-प्रकार तत्व है।

12

बस मतभेद की एक वर्णन करने के लिए, अर्थात कि *text से मेल नहीं खाता:

को देखते हुए xml:

<A> 
    Text1 
    <B/> 
    Text2 
</A> 

मिलान पर node()

<xsl:stylesheet 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    version="1.0"> 
    <xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/> 

    <!--Suppress unmatched text--> 
    <xsl:template match="text()" /> 

    <xsl:template match="/"> 
     <root> 
      <xsl:apply-templates /> 
     </root> 
    </xsl:template> 

    <xsl:template match="node()"> 
     <node> 
      <xsl:copy /> 
     </node> 
     <xsl:apply-templates /> 
    </xsl:template> 
</xsl:stylesheet> 

देता है:

<root> 
    <node> 
     <A /> 
    </node> 
    <node> 
     Text1 
    </node> 
    <node> 
     <B /> 
    </node> 
    <node> 
     Text2 
    </node> 
</root> 

* पर मिलान जबकि:

<xsl:template match="*"> 
    <star> 
     <xsl:copy /> 
    </star> 
    <xsl:apply-templates /> 
</xsl:template> 

पाठ नोड्स से मेल नहीं खाता।

<xsl:template match="child::node()"> 

यह किसी भी नोड प्रकार the child:: अक्ष के माध्यम से चुना जा सकता है कि मेल खाता है::

<root> 
    <star> 
    <A /> 
    </star> 
    <star> 
    <B /> 
    </star> 
</root> 
+1

ना ही '*' मैच टिप्पणी नोड्स, प्रोसेसिंग निर्देश नोड्स, नोड्स, नाम स्थान नोड्स को विशिष्ट बनाने और दस्तावेज़ नोड्स ... पैटर्न या अभिव्यक्ति '*' (अपने आप पर, abbr के रूप में।'child :: *' के लिए) ** केवल तत्व नोड्स और तत्व नोड्स से मेल खाता है **। 'विशेषता * * के लिए छोटा' '*' का उपयोग करते समय, विशेषता अक्ष पर _sterly_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ – Abel