2008-10-02 14 views
17

मेरे पास एक एक्सएमएल दस्तावेज़ है जिसमें समाचार कहानियां हैं, और समाचार कहानी के बॉडी एलिमेंट में सादे पाठ के बीच पी टैग हैं। जब मैं शरीर को पुनः प्राप्त करने के लिए एक्सएसएल का उपयोग करता हूं, उदा।मैं मार्कअप टैग कैसे संरक्षित करूं?

<xsl:value-of select="body" /> 

पी टैग छीनने लगते हैं। मैं एक्सएसएल के विजुअल स्टूडियो 2005 के कार्यान्वयन का उपयोग कर रहा हूं।

क्या किसी के पास कोई विचार है कि इससे कैसे बचें? धन्यवाद।

उत्तर

24

कोशिश के बजाय

<xsl:copy-of select="body"/> 

उपयोग करने के लिए। w3schools' documentation on same से:

<xsl:copy-of> तत्व वर्तमान नोड के कॉपी बन जाती है।

नोट: नेमस्पेस नोड्स, बाल नोड्स, और वर्तमान नोड के गुण स्वचालित रूप से प्रतिलिपि भी हैं!

+0

धन्यवाद ब्लेयर इसने एक इलाज किया है। – gilles27

+0

लाइफ सेवर। धन्यवाद। – SearchForKnowledge

1

यदि आपके पास इनपुट दस्तावेज़ पर नियंत्रण है, तो CDATA जाने का सही तरीका है।

+0

धन्यवाद लेकिन मैं दस्तावेज़ के प्रारूप को बदल नहीं सकता। – gilles27

+0

यदि मैं सीडीएटीए का उपयोग करके अपने नेस्टेड एचटीएमएल को लपेटता हूं, तो मुझे शाब्दिक HTML मिल जाता है, मैं लाइन-फ़ीड्स (यानी अनुच्छेद टैग) को बनाए रखना चाहता हूं। – PeterX

-1

ऐसा इसलिए है क्योंकि इंजन < पी > टैग (आउटपुट के लिए इसे छोड़कर) की व्याख्या कर रहा है। "अक्षम-आउटपुट-एस्केपिंग = हाँ | नहीं" विशेषता का उपयोग करके आपको यह निर्दिष्ट करना होगा कि आप "जैसा है" सामग्री चाहते हैं।

<xsl:value-of select="body" disable-output-escaping="yes"/> 
+0

मैंने कोशिश की लेकिन इससे कोई फर्क नहीं पड़ता। – gilles27

+0

झूठी कोशिश करें ... मुझे हमेशा सही उपयोग याद नहीं है –

+0

एक और गलती ... यह हाँ या नहीं –

4

आप इनपुट दस्तावेज़ पर नियंत्रण नहीं है, तो, कॉपी-का काम करना चाहिए:

से http://www.xml.com/pub/a/2000/06/07/transforming/index.html

"XSL: कॉपी-के तत्व, दूसरे हाथ पर, कॉपी कर सकते हैं टेम्पलेट का चयन करने वाले प्रत्येक नोड का संपूर्ण उप-भाग। इसमें गुण शामिल हैं, यदि xsl: तत्व की चयन विशेषता का प्रतिलिपि उचित मान है। निम्न उदाहरण में, टेम्पलेट शीर्षक तत्व नोड्स और उनके सभी वंशज नोड्स की प्रतिलिपि बनाता है दूसरे शब्दों, उनके टैग, सबलेमेंट्स और विशेषताओं सहित पूर्ण शीर्षक तत्व: "

<xsl:template match="title"> 
    <xsl:copy-of select="*"/> 
</xsl:template> 
+0

धन्यवाद, यह काम करता है, मैंने ब्लेयर कॉनराड के सुझाव का पालन किया क्योंकि मैंने पहले देखा था लेकिन आपने दोनों ने एक ही बात कहा है। – gilles27

1

एक्सएमएल तत्व का मूल्य - यह सिर्फ एक्सएसएलटी में नहीं बल्कि डीओएम कार्यान्वयन में है - इसके सभी वंशज टेक्स्ट नोड्स का संयोजन है। एक्सएसएलटी में, value-of एक तत्व का मान उत्सर्जित करता है, जबकि copy-of तत्व की एक प्रति उत्सर्जित करता है।

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