2009-07-09 3 views
5

मेरी वेबसाइट पर मेरे पास मेरी पृष्ठ सामग्री (स्वचालित रूप से मेरे डीबी से उत्पन्न) के साथ एक्सएमएल है - जो एक्सएसएलटी का उपयोग करके प्रदर्शित होते हैं। समस्या यह है: मैं कुछ एक्सएमएल टैग के भीतर कुछ स्वरूपण करना चाहता हूं। उदाहरण के लिए, मैं एक XML एक प्रारूप इस तरह के एक लेख से युक्त है, तो:एक्सएसएलटी: एक्सएमएल में एम्बेडेड एचटीएमएल पार्सिंग?

<article> 
    <header>Cool article</header> 
    <author>Me!</author> 
    <content> 
    This is an article. It's <b>HUGE</b>, and here's a <a href="http://Www.foo.com">link</a>. 
    </content> 
</article> 

हालांकि, अगर मैं सिर्फ इस का उपयोग करते हुए सामग्री मिलती है: <xsl:value-of select="content" /> सभी HTML स्वरूपण को नजरअंदाज कर दिया/खो दिया है। मुझे लगता है कि यह XML बाल नोड्स के लिए गलत है, और सामग्री नोड में मौजूद वास्तविक डेटा नहीं है।

यहां वर्णित स्वरूपण को प्राप्त करने का पसंदीदा तरीका क्या है?

अग्रिम धन्यवाद।

+2

[THIS] (http://stackoverflow.com/questions/4707571/how-can-you-deal-with-embedded-xml-tags-in-xslt) वास्तविक उत्तर है। 'मूल्य-के 'की बजाय' प्रति -'' का उपयोग करें। –

उत्तर

2

मुझे लगता है कि आपकी समस्या यह है:

<xsl:output method="xml" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" 
      media-type="application/html+xml" encoding="utf-8" omit-xml-declaration="yes" indent="no"/> 

सुनिश्चित करें कि आपके उत्पादन प्रकार एचटीएमएल की है,

application/html 
+0

चीयर्स! सेटिंग विधि = "एचटीएमएल" ने इसे अच्छी तरह से ठीक किया है। :) – Hallgeir

+0

मुझे खुशी है कि मैं आपकी मदद कर सकता हूं :)। – Andrew

0

या तो अपने एचटीएमएल सांकेतिक शब्दों में बदलना जब आप इसे स्पष्ट रूप से एक elemnet में एम्बेड करें, या वास्तविक पाठ को बचाने के लिये एक CDATA ब्लॉक का उपयोग करें। या तो काम करना चाहिए हालांकि ट्रांसफॉर्म कहां होता है (जेएस के माध्यम से ब्राउज़र स्तर की तरह) के आधार पर आउटपुट एन्कोडेड इकाइयों के साथ अलग हो सकता है।

+0

हाय, दुर्भाग्यवश यह टैग सादा पाठ में दिखाई देता है - यानी, कोई प्रारूपण लागू नहीं होता है। मैंने इसे का उपयोग करके ठीक किया है। धन्यवाद वैसे भी – Hallgeir

7
<xsl:value-of select="content" /> 

एक नोड के मूल्य आउटपुट। और अपने <content> नोड के मूल्य वास्तव में है:

This is an article. It's HUGE, and here's a link

क्या आप शायद जरूरत है प्रतिलिपि पूरे नोड के लिए:

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

यह काफी हद तक एक अनुमान के बाद से मैं पता नहीं कैसे है आपके प्रणाली काम करता है।

+1

चीयर्स, यह आंशिक रूप से समस्या थी। :) के साथ संयोजन में मूल्य के बजाय प्रतिलिपि का उपयोग करना। – Hallgeir

+1

यह मेरे लिए भी सही दिखता है, लेकिन यह एक्सएमएल में एम्बेडेड एक्सएचटीएमएल होने पर निर्भर करता है, न सिर्फ HTML। दूसरा, प्रतिलिपि मूल स्रोत XML दस्तावेज़ के नामस्थान में सामग्री को आउटपुट करने जा रही है, न कि नामस्थान जो एक्सएसएल अन्यथा आउटपुट कर रहा है। अधिकांश वेब ब्राउज़र शायद वास्तव में परवाह नहीं करेंगे, लेकिन यदि आप अपने आउटपुट में xmlns = "..." विशेषताओं का एक गुच्छा देखते हैं, तो यही कारण है कि। –

+1

पुरानी पोस्ट, अब मेरी मदद की। –

0

आप एक <![CDATA[ ]]> अनुभाग, जो पार्सर बताता है कि अनुभाग के भीतर विशेष सामग्री की अनदेखी करने में सामग्री डाल करने के लिए है कि एक्सएमएल फ़ाइल की पीढ़ी बदल सकता है।

+0

हाय, दुर्भाग्यवश यह टैग सादा पाठ में दिखाई देता है - यानी, कोई प्रारूपण लागू नहीं होता है। मैंने इसे का उपयोग करके ठीक किया है। धन्यवाद वैसे भी – Hallgeir

0

जब XML दस्तावेज़ में एचटीएमएल डाल, यह सुनिश्चित करें कि किसी भी एचटीएमएल कोड यह XML में डालने से पहले इनकोडिंग हैं। उदाहरण के लिए।

This is an article. It's <b>HUGE</b>, and here's a <a href="http://Www.foo.com">link</a>. 

बन गयी:

This is an article. It's &lt;b&gt;HUGE&lt;/b&gt;, and here's a &lt;a href="http://www.foo.com"&gt;link&lt;/a&gt; 

या एक CDATA ब्लॉक का उपयोग करें ताकि HTML स्वरूपण गुम नहीं होता।

+0

हाय, दुर्भाग्यवश यह टैग सादा पाठ में दिखाई देता है - यानी, कोई प्रारूपण लागू नहीं होता है। मैंने इसे का उपयोग करके ठीक किया है। वैसे भी धन्यवाद – Hallgeir

3
<xsl:value-of 
select="..." 
disable-output-escaping="yes"/> 

यह Firefox को छोड़कर सभी ब्राउज़रों पर काम करता है।

+0

एक्सएसएलटी को सर्वर-साइड पार्स किया गया है, इसलिए जब तक मुझे कुछ याद नहीं आ रहा है तो ब्राउजर अप्रासंगिक होना चाहिए? (यह मेरे विशिष्ट मुद्दे के लिए समाधान था, बीटीडब्ल्यू, तो धन्यवाद!) –

+0

@NathanHornby ब्राउज़र एक्सएमएल/एक्सएसएलटी को भी पार्स कर सकते हैं। – ZippyV

+0

किस अर्थ में? । –

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

  • कोई संबंधित समस्या नहीं^_^