2010-03-31 7 views
5

मैं एक एक्सएमएल में एक तत्व बनाने की कोशिश कर रहा हूं जहां मूल सामग्री की प्रतिलिपि बनाई गई है और संशोधित है।एक्सएसएलटी में एलिमेंट कैसे बनाएं टेम्पलेट्स का उपयोग करते समय कॉपी करना

मेरे एक्सएमएल नोड के बच्चों की संख्या में जड़ के बच्चों के साथ ही बदल सकता है की तरह

<root> 
    <node> 
    <child>value</child> 
    <child2>value2</child2> 
    </node> 
    <node2>bla</node2> 
</root> 

कुछ है। एक्सएसएलटी को पूरी सामग्री की प्रतिलिपि बनाना चाहिए, कुछ मानों को संशोधित करना चाहिए और कुछ नया जोड़ें।

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> 
    <xsl:output method="xml" encoding="UTF-8"/> 
    <xsl:template match="@*|node()"> 
    <xsl:copy> 
     <xsl:apply-templates select="@*|node()"/> 
    </xsl:copy> 
    </xsl:template> 
</xsl:stylesheet> 

(+ संशोधन के लिए आगे टेम्पलेट्स):

कॉपी करने और बदलाव कोई समस्या नहीं है।

लेकिन मैं इस पथ में कुछ पथ पर एक नया तत्व कैसे जोड़ूं, उदाहरण के लिए मैं "नोड" नोड के अंतिम तत्व के रूप में एक तत्व जोड़ना चाहता हूं। "नोड" तत्व हमेशा मौजूद है।

उत्तर

5
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> 
    <xsl:output method="xml" encoding="UTF-8"/> 
    <xsl:template match="@*|node()"> 
    <xsl:copy> 
     <xsl:apply-templates select="@*|node()"/> 
    </xsl:copy> 
    </xsl:template> 
    <xsl:template match="node"> 
    <node> 
     <xsl:apply-templates select="@*|node()"/> 
     <newNode/> 
    </node> 
    </xsl:template> 
</xsl:stylesheet> 
+0

बिल्कुल सही। धन्यवाद। –

+0

मूल तत्व में कोई बच्चा जोड़ना इस का उपयोग नहीं करता है। कोई समाधान? – Buffalo

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