xQuery

2010-04-09 12 views
7

के साथ एक्सकैक्ड एक्सएमएल को अनएकोड करने के लिए कैसे करें मेरे पास xQuery प्रकार xs में एक चर है: एक एन्कोडेड HTML स्निपेट (ट्विटर ट्वीट की सामग्री) के मान के साथ स्ट्रिंग। ऐसा लगता है:xQuery

हेडलाइंस-आज & # 8226; एपी स्रोत: & लेफ्टिनेंट; बी & gt; ओबामा & लेफ्टिनेंट;/बी & gt; के लिए चुनें न्याय पद वापस लेता है: समाचार - बाकी विश्व - & लेफ्टिनेंट; href = & quot; http://shar.es/mqMAG">http://shar.es/mqMAG</a>

जब मैं इसे HTML ब्लॉक में लिखने का प्रयास करता हूं, तो मुझे स्ट्रिंग को अनचाहे होने की आवश्यकता होती है ताकि HTML स्निपेट ब्राउज़र द्वारा व्याख्या की जाएगी। इसके बजाय स्ट्रिंग लिखा जा रहा है के रूप में और ब्राउज़र केवल पाठ के रूप में यह प्रदर्शित हो रहा है (ताकि आप < देख a href = "blah ....) यहाँ कैसे मैं इस स्ट्रिंग बाहर लिख रहा हूँ है:।

? {$ प्रविष्टि/एटम: सामग्री/पाठ()}

मैं तो यह लिखते हैं बच गए पात्रों unencoded कैसे हो सकता है < बल्कि था & LT;

मैं एक replacelike करने के लिए कोशिश की है इस लेकिन यह हमेशा & लेफ्टिनेंट को प्रतिस्थापित करता है; & लेफ्टिनेंट के साथ;

fn: की जगह ($ s "& lt;", "<")

उत्तर

2

निर्भर करता है जिस पर XQuery प्रोसेसर का उपयोग कर रहे हैं ... सबसे आसान तरीका एक का उपयोग कर किया जा रहा है प्रोसेसर जिसमें एक एक्सटेंशन है जो आपके लिए इसे संभालता है। उदाहरण के लिए, सैक्सन और निम्नलिखित एक्सएमएल साथ:

declare namespace saxon = "http://saxon.sf.net/"; 

<a>{ 
    saxon:parse(doc('test.xml')/a) 
}</a> 

कि से परिणाम:

<a>&lt;c&gt;asdf&lt;/c&gt;</a> 

आप एक XQuery आप क्या चाहते करने के लिए saxon:parse() समारोह का उपयोग करता है लिख सकते हैं है:

<a> 
    <c>asdf</c> 
</a> 

मुझे लगता है कि अधिकांश (?) XQuery प्रोसेसर के पास आपके लिए ऐसा करने का विस्तार होगा। उम्मीद है की वो मदद करदे।

3

MarkLogic में आप नीचे क्वेरी का उपयोग कर सकते हैं:

let $d := '<a>&lt;c&gt;asdf&lt;/c&gt;</a>' 

return xdmp:unquote ($d) 
3
मौजूद

, उपयोग util: पार्स(): इस लिंक सवाल का जवाब कर सकते हैं

util:parse(concat("<top>","&lt;c&gt;asdf&lt;/c&gt;",</top>")‌​) 
+0

, इसे शामिल करने के लिए बेहतर है यहां उत्तर के आवश्यक भाग और संदर्भ के लिए लिंक प्रदान करते हैं। लिंक किए गए पृष्ठ में परिवर्तन होने पर लिंक-केवल उत्तर अमान्य हो सकते हैं। – Yaroslav

+1

वास्तव में यह है :-(- ईएक्सिस्ट लाइब्रेरी उपयोग में एक फ़ंक्शन पार्स है जो एक स्ट्रिंग का विश्लेषण करेगा बशर्ते यह अच्छी तरह से गठित एक्सएमएल है। असीमित यह पता है कि स्ट्रिंग में एक ही रूट है, यह शीर्ष तत्व जोड़ना सर्वोत्तम है : उपयोग: पार्स (concat ("", "< सी > asdf </c >", ")) –

+0

उत्तर में अपनी टिप्पणी जोड़ें, संपादित करें और जो आवश्यक है उसे जोड़ें – Yaroslav