क्या XML विशेषता मानों में पंक्ति विराम की अनुमति है?


91

मुझे पता है कि यह सुरुचिपूर्ण या वांछित नहीं है, लेकिन क्या यह अनुमति दी गई है (अच्छी तरह से बनाई गई XML में) एक XML मूल्य में गुणनखंड के लिए कई पंक्तियों को जोड़ने के लिए?

जैसे

<some-xml-element value="this value goes over....
multiple lines!" />

हाँ मुझे एहसास है कि लेखन के बेहतर तरीके हैं। मैं व्यक्तिगत रूप से इसे लिखूंगा:

<some-xml-element>
<value>this value goes over...
multiple lines!</value>
</some-xml-element>

या:

<some-xml-element value="this value goes over....&#13;&#10;" />

लेकिन हमारे पास अपना स्वयं का XML पार्सर है और मैं जानना चाहूंगा कि पहले से निर्मित XML में पहले उदाहरण की अनुमति है या नहीं।


1
.NET XDocument पार्सर इसे अपेक्षा के अनुसार स्वीकार करता है, लेकिन विशेषता मान को एक स्थान के साथ लौटाया जाता है, न कि एक पंक्ति फ़ीड के रूप में यह एक पाठ में होगा <value> जैसा कि आप दूसरा उदाहरण देते हैं। (आपका प्रश्न .NET के लिए विशिष्ट नहीं है, लेकिन मेरा नमूना डेटा है। मुझे नहीं पता कि यह सामान्य मानक या .NET फीचर का हिस्सा है।)
मार्क हर्ड


इसी तरह के एक उदाहरण के लिए एक सवाल बनाया जो newlines को बरकरार रखता है: stackoverflow.com/a/29782321/611007
n611x007

संबंधित: stackoverflow.com/questions/260436 - संबंधित: stackoverflow.com/questions/2004386 - संबंधित: stackoverflow.com/questions/1289524
n611x007

जवाबों:


101

http://www.w3.org/TR/REC-xml/#NT-AttValue

के अलावा सब कुछ कहने के लिए लगता है <, &है, और अपने सीमांकक ( 'या ") ठीक हैं। तो न्यूलाइन भी होनी चाहिए।


6
एक उदाहरण जब नई लाइनें एक विशेषता के अंदर एक अच्छा विचार हैं xsi के लिए है: स्प्रिंग कॉन्फ़िगरेशन में स्कीमा आवंटन विशेषता, जिसमें रिक्त स्थान द्वारा अलग किए गए कई URL हो सकते हैं और इस प्रकार स्क्रीन चौड़ाई की तुलना में अधिक लंबा हो सकता है।
8

3
हालांकि यह मान्य है कि पार्सर उन्हें अंतरिक्ष में सामान्य कर देगा, जैसा कि जनवरी केटोकोवस्की का कहना है
n611x007

ठीक है ... मैं XSLT दस्तावेज़ों में परीक्षण स्टेटमेंट के लंबे समय तक / जब कई लाइनों का उपयोग करता हूं।
नूलियस

51

यह अनुमति दी जाती है, हालांकि W3C की अनुशंसा के अनुसार आपके XML पार्सर को स्पेस (0x20) के लिए सभी व्हाट्सएप पात्रों को सामान्य करना चाहिए - इसलिए आपके उदाहरणों का आउटपुट अलग-अलग होगा (आपके पास "& # 13; & # 10" आउटपुट के लिए नई पंक्ति होनी चाहिए) ; ", लेकिन पहले मामले में केवल स्थान)।

http://www.w3.org/TR/1998/REC-xml-19980210#AVNormalize


3

केवल .NET: यदि आप सुनिश्चित नहीं हैं कि लक्ष्य स्ट्रिंग वैध xml विशेषता है (और कोड के माध्यम से इस विशेषता का मूल्य प्रदान करें), तो आप हमेशा अमान्य वर्णों से बचने के लिए SecurityElement.Escape फ़ंक्शन का उपयोग कर सकते हैं ।

इस फ़ंक्शन के विवरण के अनुसार, केवल अमान्य वर्ण हैं:

<, >, &, ',"

और इसका मतलब है (जैसा कि मेरे पूर्ववर्तियों ने लिखा है), कि नई लाइन ठीक होनी चाहिए।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.