मैं एक्सएसएलटी सीखने की कोशिश कर रहा हूं लेकिन उदाहरण के लिए मैं सबसे अच्छा काम करता हूं। मैं स्कीमा परिवर्तन के लिए एक छोटी स्कीमा करना चाहता हूँ। मैं इस परिवर्तन को केवल एक पास में कैसे कर सकता हूं (मेरा वर्तमान समाधान दो पास का उपयोग करता है और ग्राहकों के मूल आदेश को खो देता है)?एकल के लिए एकल नोड्स का चयन कैसे करें XSLT
से:
<?xml version="1.0" encoding="UTF-8"?>
<sampleroot>
<badcustomer>
<name>Donald</name>
<address>Hong Kong</address>
<age>72</age>
</badcustomer>
<goodcustomer>
<name>Jim</name>
<address>Wales</address>
<age>22</age>
</goodcustomer>
<goodcustomer>
<name>Albert</name>
<address>France</address>
<age>51</age>
</goodcustomer>
</sampleroot>
करने के लिए:
<?xml version="1.0" encoding="UTF-8"?>
<records>
<record id="customer">
<name>Donald</name>
<address>Hong Kong</address>
<age>72</age>
<customertype>bad</customertype>
</record>
<record id="customer">
<name>Jim</name>
<address>Wales</address>
<age>22</age>
<customertype>good</customertype>
</record>
<record id="customer">
<name>Albert</name>
<address>France</address>
<age>51</age>
<customertype>good</customertype>
</record>
</records>
मैं पहले से ही यह एक बुरा तरह से हल किया (मैं ग्राहकों के आदेश खो देते हैं और मुझे लगता है कि मैं फ़ाइल को पार्स करने के लिए है कि कई बार:
<?xml version='1.0'?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/sampleroot">
<records>
<xsl:for-each select="goodcustomer">
<record id="customer">
<name><xsl:value-of select="name" /></name>
<address><xsl:value-of select="address" /></address>
<age><xsl:value-of select="age" /></age>
<customertype>good</customertype>
</record>
</xsl:for-each>
<xsl:for-each select="badcustomer">
<record id="customer">
<name><xsl:value-of select="name" /></name>
<address><xsl:value-of select="address" /></address>
<age><xsl:value-of select="age" /></age>
<customertype>bad</customertype>
</record>
</xsl:for-each>
</records>
</xsl:template>
</xsl:stylesheet>
कृपया कोई मुझे सही एक्सएसएलटी निर्माण के साथ मदद कर सकता है जहां मुझे केवल एक ही पार्स (प्रत्येक के लिए केवल एक) का उपयोग करना होगा?
धन्यवाद,
क्रिस
अच्छा प्रश्न क्रिस (+1)। एक अच्छे समाधान के लिए मेरा जवाब देखें। :) –