पर एक्सएसएल का उपयोग एक्सएमएल से सरल सादे पाठ आउटपुट उत्पन्न करने के लिए मुझे एक्सएसएल का उपयोग करने की आवश्यकता है। चूंकि मुझे ऑनलाइन कोई अच्छा, संक्षिप्त उदाहरण नहीं मिला, इसलिए मैंने अपना समाधान यहां पोस्ट करने का फैसला किया। किसी भी लिंक के लिए एक बेहतर उदाहरण की चर्चा करते हुए निश्चित रूप से सराहना की जाएगी:एक्सएसएल का उपयोग सादा पाठ
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" >
<xsl:output method="text" omit-xml-declaration="yes" indent="no"/>
<xsl:template match="/">
<xsl:for-each select="script/command" xml:space="preserve">at -f <xsl:value-of select="username"/> <xsl:value-of select="startTime/@hours"/>:<xsl:value-of select="startTime/@minutes"/> <xsl:value-of select="startDate"/><xsl:text>
</xsl:text></xsl:for-each>
</xsl:template>
</xsl:stylesheet>
कुछ महत्वपूर्ण चीजें हैं जो मुझे यहाँ मदद की बाहर:
- XSL के उपयोग: उत्पादन मानक घोषणा न करने का विकल्प शुरुआत में आउटपुट दस्तावेज़
- xml का उपयोग: स्पेस = "संरक्षित" विशेषता xsl के भीतर लिखा गया किसी भी सफेद स्थान को संरक्षित करने के लिए: प्रत्येक टैग के लिए। यह मुझे एक ही पंक्ति (लाइन ब्रेक के अपवाद के साथ) के साथ-साथ टैग सहित प्रत्येक टैग के लिए सभी कोड लिखने की भी आवश्यकता है।
- लाइन ब्रेक डालने का उपयोग - फिर मुझे मानक एक्सएमएल इंडेंटिंग को छोड़ना पड़ा।
जिसके परिणामस्वरूप और इस xslt के लिए वांछित उत्पादन किया गया था:
-f alluser 23:58 17.4.2010
पर -f ggroup67 पर 7:58 28.4.2010
पर -f ggroup70 15: 58 2010/04/18
-f alluser 23:58 18.4.2010
पर -f ggroup61 7:58 22.9.2010
पर -f ggroup60 23:58 21.9.2010
पर -f alluser 3:58 22.9 पर .2010
जैसा कि मैंने कहा, यह और अधिक सुन्दर तरीके से करने के सुझावों की सराहना की जाएगी।
अनुवर्ती 2011-05-08:
<script xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="script.xsd">
<command>
<username>alluser</username>
<startTime minutes="58" hours="23"/>
<startDate>17.4.2010</startDate>
</command>
</script>
आप 'concat (, उपयोगकर्ता नाम '-f पर', '', STARTTIME/@ घंटे, '', ...)' का उपयोग करके '' तत्वों की संख्या पर बचा सकता है। इसके अलावा, आप अपने स्रोत कोड को लपेट सकते हैं - यदि आप टैग के अंदर ऐसा करते हैं, तो यह आउटपुट को प्रभावित नहीं करेगा। –
अच्छा सवाल, +1। एक पूर्ण, बहुत छोटा और वास्तव में सामान्य समाधान के लिए मेरा उत्तर देखें। –
@ क्रिस्टोफर क्रूटज़िग: कॉन्सैट() पर महान सुझाव के लिए धन्यवाद। आप "अपने स्रोत कोड को लपेटने" के साथ क्या कह रहे हैं? – Chris