2012-05-24 17 views
6

मैं थोड़ी देर के लिए इसके साथ संघर्ष कर रहा हूं। मेरे पास एक बहुभाषी वेब ऐप है जो किसी बिंदु पर एक्सएमएल आउटपुट करता है। इस एक्सएमएल में कोई भी भाषा हो सकती है, इसलिए स्वच्छता के लिए मेरा दृष्टिकोण कुछ वर्णों को अस्वीकार करना है जो एक्सएमएल को डालने से रोकते हैं। सीडीएटीए में जितना मैं कर सकता हूं उतना लपेटता हूं, लेकिन मेरे पास गुणों में सामग्री का एक टन है। मैं विशेष पात्रों को अस्वीकार नहीं करना चाहता क्योंकि पूरी तरह से वैध वर्ण जैसे कि ब्रांड्स, अवधि, डैश, टिक और एस्ट्रोफ़ेस का उपयोग हर समय किया जाता है और वे काम करते हैं।किसी XML विशेषता के लिए फ़ॉर्म फ़ील्ड को कैसे साफ़ करें जिसमें वैध यूटीएफ 8 वर्ण होंगे?

एक्सएमएल विशेषता को तोड़ने वाले सभी पात्रों को बाहर निकालने का सबसे अच्छा तरीका क्या है, लेकिन भाषाओं को बरकरार रखा जाए?

अद्यतन:
मैंने पाया: http://en.wikipedia.org/wiki/CDATA#CDATA-type_attribute_value, जो मेरे लिए संकेत दिया है कि मैं DTD का उपयोग कर एक CDATA अनुभाग के रूप में एक विशेषता का वर्णन कर सकते हैं; हालांकि, यह सच नहीं लगता है।

<?xml version="1.0" ?> 
<!DOCTYPE foo [ 
    <!ELEMENT foo EMPTY> 
    <!ATTLIST foo a CDATA #REQUIRED> 
]> 
<foo a="&bull;"><![CDATA[ &bull; ]]> </foo> 

कोई भी वैधकर्ता शिकायत में इकाई नहीं होने के बारे में शिकायत करेगा। यदि आप विशेषता को हटाते हैं तो यह मान्य होगा। इसके अलावा मैंने सुना है कि स्कीमा जाने का रास्ता है, इसलिए अगर उपरोक्त की तरह कुछ संभव है लेकिन इसके बजाय एक्सएमएल स्कीमा का उपयोग करना, तो यह बहुत ही अच्छा होगा।

धन्यवाद!

+0

एक ही समस्या जब मैं तत्व विशेषता पर एचटीएमएल स्टोर करने के लिए तो मैं बच है/unescape –

+0

वैसे अगर मैं एक विकल्प मैं सब कुछ विशेषताओं में से बाहर ले जाना चाहते हैं के लिए किया था की कोशिश, लेकिन यह मेरी पसंद अभी तक नहीं है: पी। – Parris

उत्तर

2

इस वैध

<?xml version="1.0" ?> 
<!DOCTYPE foo [ 
    <!ELEMENT foo EMPTY> 
    <!ATTLIST foo a CDATA #REQUIRED> 
]> 
<foo a="&amp;bull;"><![CDATA[ &bull; ]]> </foo> 

है आप

htmlentities($str); 

साथ संस्थाओं HTML करने के लिए विशेष वर्ण का अनुवाद और साथ

html_entity_decode($str); 

देखने पीछे कर सकते हैं: http://www.php.net/manual/en/function.htmlentities.php

यह भी देखना "HTML अक्षरों से परे"

-1

आपको केवल <!CDATA[ ]]> टैग में लपेटना होगा। आप भी एक htmlentities में फेंक सकते हैं।

attr="<!CDATA[' . htmlentities($value) . ']]>" 
+0

-1, <पूरे इंटरनेट पर बताए गए गुणों में प्रकट नहीं हो सकता है। यदि आप उन्हें बचते हैं तो यह वास्तव में आपको सीडीएटी निर्दिष्ट नहीं करता है। – Parris