XML区分大小写吗?

Ian*_*Ian 105 xml case-sensitive

简短的问题

XML区分大小写吗?

更长的问题

例如:

<Shirt color="Red"/>
Run Code Online (Sandbox Code Playgroud)

属性颜色的类型string可以包含一组有效颜色(Red,BlueGreen).

为了验证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>
Run Code Online (Sandbox Code Playgroud)

我是否希望接受红色,蓝色和绿色的不同案例变体?或XML被广泛接受为区分大小写?

Jon*_*ton 78

简答:

是 - XML区分大小写.

更长的答案:

它被广泛接受为区分大小写,但是如果您想更灵活地接受,请查看下面的问题,该问题讨论了不区分大小写的枚举:

XML模式案例简单类型字符串的不敏感枚举

  • 更长的答案:没有什么可以阻止你编写一个不区分大小写的XML应用程序.但这不是预期的或通常的. (6认同)

Mic*_*Kay 15

使用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>
Run Code Online (Sandbox Code Playgroud)

最近发布的Saxon和Xerces支持XSD 1.1.

  • 是的,你需要谨慎,但@René 的回答需要限定。首先,“只是 W3C 的建议”:嗯,XSD 1.0 也是如此。“推荐”是 W3C 所说的完成的、最终的、批准的规范。是的,确实 XSD 1.1 目前只有三种实现(Saxon、Xerces 和 Altova),这是您应该考虑的一个因素。但不要被 JDK 中的内容所阻碍 - JDK 早已放弃了对最新 W3C 标准的支持(例如,它甚至不支持 XPath 2.0),但有大量第三方库可以填补这一空白。 (2认同)