क्या एक्सएमएल केस संवेदनशील है?


109

लघु प्रश्न

क्या एक्सएमएल केस संवेदनशील है?

लंबा सवाल

उदाहरण के लिए:

<Shirt color="Red"/>

विशेषता रंग प्रकार का है stringजो मान्य रंग (का एक सेट हो सकती है Red, Blueऔर Green)।

XML को मान्य करने के लिए, मैंने निम्नलिखित XSD का उपयोग किया:

  <xs:simpleType name="ColorType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Red"/>
      <xs:enumeration value="Blue"/>
      <xs:enumeration value="Green"/>
    </xs:restriction>
  </xs:simpleType>

क्या मुझे रेड, ब्लू और ग्रीन के अलग-अलग केस वेरिएशन स्वीकार करने की उम्मीद है? या XML को केस-संवेदी के रूप में व्यापक रूप से स्वीकार किया जाता है?


4
हाँ यही है। एक्सएमएल के बारे में जानने वाली पहली चीजों में से एक।
ओडेड

जवाबों:


81

संक्षिप्त जवाब:

हाँ - XML ​​केस सेंसिटिव है।

दीर्घ उत्तर:

इसे केस सेंसिटिव के रूप में व्यापक रूप से स्वीकार किया जाता है, हालाँकि यदि आप अधिक लचीले ढंग से स्वीकार करना चाहते हैं, तो नीचे दिए गए प्रश्न पर एक नज़र डालें, जिसमें केस-इन्सेंसिव एन्यूमरेशन होने की चर्चा है:

XML स्कीमा केस इन्सेंसिटिव एन्यूमरेशन ऑफ सिंपल टाइप स्ट्रिंग


6
लंबे समय तक उत्तर: आपको XML एप्लिकेशन लिखने से रोकने के लिए कुछ भी नहीं है जो कि असंवेदनशील है। लेकिन यह अपेक्षित या सामान्य नहीं होगा।
मैथ्यू विल्सन

17

XSD 1.1 के साथ आप एक दावे का उपयोग करके केस-असंवेदनशील अभिज्ञान प्राप्त कर सकते हैं:

<xs:simpleType name="RGB">
  <xs:restriction base="xs:string">
    <xs:assert test="lower-case($value) = ('red', 'green', 'blue')"/>
  </xs:restriction>
</xs:simpleType>

XSD 1.1 सैक्सन और Xerces की हालिया रिलीज़ में समर्थित है।


XSD 1.1 का उपयोग करने के बारे में पता होना चाहिए, मौजूदा समय में यह सिर्फ W3C की सिफारिश है - XSD 1.1 सत्यापन के साथ Xerces बीटा स्थिति में एक स्टैंडअलोन विरूपण साक्ष्य है, और XSD 1.1 JDK द्वारा समर्थित नहीं है, यहां तक ​​कि सबसे हाल ही में 1.8 द्वारा भी नहीं। । जहाँ तक मुझे पता है JDK 1.9 के लिए भी इसकी योजना नहीं है। आप इस तरह से JDK से निर्मित XSD 1.1 पर आधारित JAXB जैसी उन्नत XML तकनीकों का उपयोग नहीं कर सकते।
रेने

हां, आपको सतर्क रहने की जरूरत है, लेकिन @ रेने के जवाब में योग्यता की जरूरत है। सबसे पहले, "बस एक W3C सिफारिश": ठीक है, तो XSD 1.0 है। "अनुशंसा" वही है जो W3C एक समाप्त, अंतिम, अनुसमर्थित युक्ति कहता है। हां, यह सच है कि वर्तमान में XSD 1.1 के केवल तीन कार्यान्वयन हैं (सैक्सन, एक्सरेस और अल्टोवा), और यह एक ऐसा कारक है जिसे आपको ध्यान में रखना चाहिए। लेकिन JDK में जो कुछ भी नहीं है उसे वापस नहीं रखा जाना चाहिए - JDK ने नवीनतम W3C मानकों के लिए लंबे समय तक समर्थन छोड़ दिया है (जैसे कि यह XPath 2.0 का समर्थन भी नहीं करता है) लेकिन अंतर को भरने के लिए तीसरे पक्ष के पुस्तकालयों में बहुत सारे हैं।
माइकल कया

बेशक यह इस्तेमाल की जाने वाली तकनीक पर निर्भर करता है। यदि आप निम्न-स्तरीय पार्सिंग और कोड लागू करते हैं, तो आप एक 3-पार्टी पार्सर लाइब्रेरी का उपयोग कर सकते हैं (XSD 1.1 के लिए Xerces अभी भी बीटा है, एक ही Xerces संस्करण की दो अलग-अलग कलाकृतियां हैं!)। JAXB - @Michael के उदाहरण के लिए: क्या आप एक 3-पार्टी JAXB कार्यान्वयन जानते हैं या XSD 1.1 का उपयोग करना व्युत्पन्न करते हैं, इस प्रकार, "विकल्प" का उपयोग करके उदाहरण के लिए कक्षाएं उत्पन्न करते हैं? वैसे भी, यह उसकी जरूरतों के आधार पर चुनने के लिए इयान पर है।
रेने
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.