मैं एक छोटी संपर्क सूची स्टोर करने के लिए एक्सएमएल का उपयोग कर रहा हूं और एक एक्सएसएल टेम्पलेट लिखने की कोशिश कर रहा हूं जो इसे एक CSV फ़ाइल में बदल देगा। मेरे पास जो समस्या है वह आउटपुट में व्हाइटस्पेस के साथ है।एक्सएसएलटी - टेम्पलेट से व्हाइटस्पेस हटाएं
उत्पादन:
Friend, John, Smith, Home,
123 test,
Sebastopol,
California,
12345,
Home 1-800-123-4567, Personal [email protected]
मैं दांतेदार/दूरी पर दोनों स्रोत एक्सएमएल फ़ाइल और संबद्ध XSL टेम्पलेट यह आसान पढ़ सकते हैं और विकसित करने के लिए बनाने के लिए है, लेकिन है कि सभी अतिरिक्त सफेद स्थान उत्पादन में ही हो रही है । एक्सएमएल के पास नोड्स के अंदर अतिरिक्त सफेद जगह नहीं है, बस प्रारूपण के लिए उनके बाहर, और यह एक्सएसएलटी के लिए भी जाता है।
सीएसवी फ़ाइल वैध होने के लिए, प्रत्येक प्रविष्टि को अपनी लाइन पर होना चाहिए, टूटना नहीं है। एक्सएमएल और एक्सएसएलटी से सभी अतिरिक्त सफेद जगहों को अलग करने के अलावा (उन्हें कोड की केवल एक लंबी लाइन बनाना), आउटपुट में व्हाइटस्पेस से छुटकारा पाने का कोई और तरीका है?
संपादित करें: यहाँ
<PHONEBOOK>
<LISTING>
<FIRST>John</FIRST>
<LAST>Smith</LAST>
<ADDRESS TYPE="Home">
<STREET>123 test</STREET>
<CITY>Sebastopol</CITY>
<STATE>California</STATE>
<ZIP>12345</ZIP>
</ADDRESS>
<PHONE>1-800-123-4567</PHONE>
<EMAIL>[email protected]</EMAIL>
<RELATION>Friend</RELATION>
</LISTING>
</PHONEBOOK>
और XSLT है: यहां एक छोटा एक्सएमएल नमूना है
<?xml version="1.0" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" />
<xsl:template match="/">
<xsl:for-each select="//LISTING">
<xsl:value-of select="RELATION" /><xsl:text>, </xsl:text>
<xsl:value-of select="FIRST" /><xsl:text>, </xsl:text>
<xsl:value-of select="LAST" /><xsl:text>, </xsl:text>
<xsl:if test="ADDRESS">
<xsl:for-each select="ADDRESS">
<xsl:choose>
<xsl:when test="@TYPE">
<xsl:value-of select="@TYPE" />,
</xsl:when>
<xsl:otherwise>
<xsl:text>Home </xsl:text>
</xsl:otherwise>
</xsl:choose>
<xsl:value-of select="STREET" />,
<xsl:value-of select="CITY" />,
<xsl:value-of select="STATE" />,
<xsl:value-of select="ZIP" />,
</xsl:for-each>
</xsl:if>
<xsl:for-each select="PHONE">
<xsl:choose>
<xsl:when test="@TYPE">
<xsl:value-of select="@TYPE" />
</xsl:when>
<xsl:otherwise><xsl:text>Home </xsl:text></xsl:otherwise>
</xsl:choose>
<xsl:value-of select="." /><xsl:text >, </xsl:text>
</xsl:for-each>
<xsl:if test="EMAIL">
<xsl:for-each select="EMAIL">
<xsl:choose>
<xsl:when test="@TYPE">
<xsl:value-of select="@TYPE" /><xsl:text > </xsl:text>
</xsl:when>
<xsl:otherwise><xsl:text >Personal </xsl:text></xsl:otherwise>
</xsl:choose>
<xsl:value-of select="." /><xsl:text >, </xsl:text>
</xsl:for-each>
</xsl:if>
<xsl:text> </xsl:text>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
आप प्रत्येक '' पर 'अक्षम-आउटपुट-एस्केपिंग' का उपयोग क्यों करते हैं? आपको ' 'के लिए इसकी आवश्यकता नहीं है। एक्सएसएलटी 1.0 spec से: "टेक्स्ट आउटपुट विधि अक्षम-आउटपुट-एस्केपिंग विशेषता को अनदेखा करती है, क्योंकि यह कोई आउटपुट एस्केपिंग नहीं करती है।" –