2009-03-31 17 views
11

में सीडीएटीए टैग के भीतर से एचटीएमएल टैग प्रस्तुत करना मेरे पास मेरे एक्सएमएल कोड के भीतर एक सीडीएटीए टैग है जिसमें कुछ हाइपरलिंक्स हैं।एक्सएसएल

<smartText><![CDATA[ 
Among individual stocks, the top percentage gainers in the S.&P. 500 are 
<a href ='http://investing.domain.com/research/stocks/snapshot 
/snapshot.asp?ric=LNC'>Lincoln National Corp</a> and 
<a href ='http://investing.domain.com/research/stocks/snapshot 
/snapshot.asp?ric=PLD'>ProLogis</a>.]]> 
</smartText> 

मैं इसे एक HTML पृष्ठ में रूपांतरित करने के लिए इस प्रकार है कोशिश कर रहा हूँ ...

<p class="smartText"> 
    <xsl:copy-of select="marketSummaryModuleData/smartText"/>          
</p>  

दुर्भाग्य पृष्ठ पर उत्पादन अप शुद्ध पाठ में, नहीं एचटीएमएल के रूप में दिखाता है।

Among individual stocks, the top percentage gainers in the S.&P. 500 are <a href ='http://investing.businessweek.com/research/stocks/snapshot/snapshot.asp?ric=PLD'>ProLogis</a> and <a href ='http://investing.businessweek.com/research/stocks/snapshot/snapshot.asp?ric=LNC'>Lincoln National Corp</a>. 

CDATA अनुभाग, एक क्लासिक एएसपी पेज से बनाया जा रहा है ताकि वास्तविक XML आउटपुट CDATA खंड शामिल नहीं है। क्या वह समस्या का हिस्सा हो सकता है? मुझे पृष्ठ पर प्रस्तुत करने की जानकारी नहीं मिल रही है। मैंने Google खोजों द्वारा ऑफ़र किए गए कई समाधानों का प्रयास किया है, जैसे अक्षम-भागने-टैग, xsl: copy-of, xsl: value-of और more।

धन्यवाद

+0

अंतिम समाधान है ... कृपया इस पोस्टिंग को देखते हैं। http://stackoverflow.com/questions/706314/hyperlinks-within-xslt-templates –

उत्तर

6

आपको एक्सएमएल को सही करना है ताकि वांछित एचटीएमएल (और इसे अच्छी तरह से गठित एक्सएमएल होना चाहिए) सीडीएटीए सेक्शन के भीतर निहित नहीं है।

कोई भी सीडीएटीए अनुभाग टेक्स्ट() नोड का हिस्सा है और एक्सएसएलटी प्रोसेसर इस तरह से व्यवहार करता है।

सीडीएटीए के भीतर मार्कअप डालने को सार्वभौमिक रूप से खराब अभ्यास के रूप में स्वीकार किया जाता है और रिपोर्ट की गई समस्या एक सामान्य परिणाम है।

डीओई (अक्षम-आउटपुट-एस्केपिंग) एक्सएसएलटी में एक वैकल्पिक सुविधा है और इसे लागू करने और विभिन्न एक्सएसएलटी प्रोसेसर पर अपेक्षित परिणामों का उत्पादन करने की गारंटी नहीं है।

के शब्दों में W3C XSLT Spec:।

"An XSLT processor is not required to support disabling output escaping. If an xsl:value-of or xsl:text specifies that output escaping should be disabled and the XSLT processor does not support this, the XSLT processor may signal an error; if it does not signal an error, it must recover by not disabling output escaping. "

और:

"Since disabling output escaping may not work with all XSLT processors and can result in XML that is not well-formed, it should be used only when there is no alternative."

+0

@ टोमालक डी-ओ-ई ओपी की समस्या को हल कर सकता है या नहीं, जिस पर वह एक्सएसएलटी प्रोसेसर का उपयोग कर रहा है। –

+0

अक्षम-आउटपुट-एस्केपिंग काम करता है, लेकिन सभी ब्राउज़रों में नहीं। चूंकि इस मॉड्यूल का उपयोग हजारों लोगों द्वारा किया जाएगा, इसलिए इसे सभी ब्राउज़रों में काम करने की आवश्यकता होगी। ऐसा लगता है कि मुझे अपने एएसपी कोड में डेटा लेना होगा और पाठ की एक बड़ी स्ट्रिंग के बजाय इसे एकाधिक टैग में पार्स करना होगा। –

+0

@ शेन: आपको उस विवरण को जोड़ना चाहिए जिसे आपको अपने प्रश्न के सभी ब्राउज़रों में काम करने की आवश्यकता है। क्या सर्वर-साइड आपके लिए काम करेगा? – AnthonyWJones

11
<p class="smartText"> 
    <xsl:value-of 
    select="marketSummaryModuleData/smartText" 
    disable-output-escaping="yes" 
    /> 
</p> 

संपादित करें: @Randell टिप्पणी में बताते हैं के रूप में, disable-output-escaping सभी XSLT प्रोसेसर में मौजूद नहीं है। उदाहरण के लिए, फ़ायरफ़ॉक्स में से एक इस विशेषता का समर्थन नहीं करता है। उपरोक्त इन प्रोसेसर के लिए काम नहीं करेगा। सभी स्टैंड-अलोन एक्सएसएलटी प्रोसेसर मुझे इसका समर्थन है, हालांकि।

+0

यह सभी ब्राउज़रों पर काम करने की गारंटी नहीं है। – Randell

+0

@ रैंडेल: इस सवाल से बिल्कुल स्पष्ट नहीं है कि एक्सएसएलटी रूपांतरण ब्राउज़र में किया जा रहा है। – Tomalak

+0

क्या आप इस पर थोड़ा सा विस्तार कर सकते हैं? – Randell

0
<xsl:for-each select="marketSummaryModuleData/smartText"> 
    <xsl:copy-of select="node()"/> 
</xsl:for-each> 

<smartText> 
Among individual stocks, the top percentage gainers in the S.&P. 500 are 
<a href ='http://investing.domain.com/research/stocks/snapshot 
/snapshot.asp?ric=LNC'>Lincoln National Corp</a> and 
<a href ='http://investing.domain.com/research/stocks/snapshot 
/snapshot.asp?ric=PLD'>ProLogis</a>. 
</smartText> 
संबंधित मुद्दे