XML büyük / küçük harfe duyarlı mı?


109

Kısa soru

XML büyük / küçük harfe duyarlı mı?

Daha uzun soru

Örneğin:

<Shirt color="Red"/>

Nitelik renk türüdür stringgeçerli renklerin (kümesi içerebilir Red, Blueve Green).

XML'yi doğrulamak için aşağıdaki XSD'yi kullandım:

  <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>

Kırmızı, Mavi ve Yeşilin farklı durum varyasyonlarını kabul etmem bekleniyor mu? Veya XML büyük / küçük harfe duyarlı olarak yaygın bir şekilde kabul ediliyor mu?


4
Evet öyle. XML hakkında ilk öğrenilen şeylerden biri.
Oded

Yanıtlar:


81

Kısa cevap:

Evet - XML ​​büyük / küçük harfe duyarlıdır.

Daha Uzun Cevap:

Büyük / küçük harfe duyarlı olarak kabul edilmektedir, ancak daha esnek bir şekilde kabul etmek istiyorsanız, büyük / küçük harfe duyarlı olmayan numaralandırmaları tartışan aşağıdaki soruya bir göz atın:

Basit Tür Dizesinin XML Şeması Durum Duyarsız Numaralandırması


6
Daha uzun cevap: Bir XML uygulaması yazmanızı engelleyecek hiçbir şey yoktur, bu durum kayıtsızdır. Ama beklenmez veya olağan olmazdı.
Matthew Wilson

17

XSD 1.1 ile, bir iddia kullanarak büyük / küçük harfe duyarlı olmayan bir numaralandırma elde edebilirsiniz:

<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, Saxon ve Xerces'in son sürümlerinde desteklenmektedir.


Sadece XSD 1.1 kullanmaya dikkat edin, şu anda sadece bir W3C önerisidir - XSD 1.1 doğrulamalı Xerces, beta durumunda bağımsız bir yapıdır ve XSD 1.1, JDK tarafından desteklenmez, en sonuncusu tarafından bile desteklenmez 1.8 . Bildiğim kadarıyla JDK 1.9 için planlanmadı bile. JDK'dan yerleşik XSD 1.1'e dayalı JAXB gibi gelişmiş XML teknolojilerini bu şekilde kullanamazsınız.
René

Evet, dikkatli olmalısınız, ancak @ René'nin cevabının nitelendirilmesi gerekiyor. İlk olarak, "sadece bir W3C önerisi": XSD 1.0 da öyle. "Öneri", W3C'nin bitmiş, nihai, onaylanmış bir şartname olarak adlandırdığı şeydir. Evet, şu anda XSD 1.1'in yalnızca üç uygulaması olduğu doğru (Saxon, Xerces ve Altova) ve bu, hesaba katmanız gereken bir faktör. Ancak JDK'nın içindekilere engel olmayın - JDK, en son W3C standartları için uzun süredir desteği terk etti (örneğin, XPath 2.0'ı desteklemiyor), ancak boşluğu dolduracak çok sayıda üçüncü taraf kitaplığı var.
Michael Kay

Elbette kullanılan teknolojiye bağlı. Düşük seviyeli ayrıştırma ve kod uygularsanız, bir 3. taraf ayrıştırıcı kitaplığı kullanabilirsiniz (XSD 1.1 için Xerces hala beta, aynı Xerces sürümünün iki farklı yapısı vardır!). JAXB - @Michael örneği için: Üçüncü taraf bir JAXB uygulaması veya XSD 1.1 kullanan, dolayısıyla örneğin "alternatifler" kullanarak sınıflar üreten bir türev biliyor musunuz? Her neyse, ihtiyaçlarına göre seçim yapmak Ian'a düşer.
René
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.