2011-09-14 80 views
86

短缺問題XML是否區分大小寫?

是XML區分大小寫?

更長問題

例如:

<Shirt color="Red"/> 

屬性顏色是string類型可含有一組有效的顏色(RedBlueGreen)的。

驗證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被廣泛接受爲區分大小寫?

+3

是的。首先了解XML的一件事。 – Oded

回答

67

答案很簡單:

是 - XML是區分大小寫。

再回應:

但是如果你想接受更靈活的它被廣泛認爲是區分大小寫的,看看下面的問題,其討論了具有不區分大小寫的枚舉:

XML Schema Case Insensitive Enumeration of Simple Type String

+5

較長的答案:沒有什麼能阻止您編寫不區分大小寫的XML應用程序。但它不會被期望或通常。 –

13

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

最近發佈的Saxon和Xerces支持XSD 1.1。

+0

只需注意使用XSD 1.1,目前它只是一個W3C推薦標準 - 具有XSD 1.1驗證的Xerces是處於beta狀態的獨立工件,並且JDK不支持XSD 1.1,即使是最新的1.8。就我所知,它甚至沒有計劃用於JDK 1.9。您不能像這樣使用基於JDK內置的XSD 1.1的JAXB之類的高級XML技術。 –

+0

是的,你需要謹慎,但@René的回答需要資格。首先,「僅僅是一個W3C推薦」:好的,XSD 1.0也是如此。 「推薦」是W3C所稱的完成的,最終的,批准的規範。是的,目前只有三種XSD 1.1實現(Saxon,Xerces和Altova),這是您應該考慮的一個因素。但不要被JDK中的內容所束縛--JDK早已放棄了對最新W3C標準的支持(例如它甚至不支持XPath 2.0),但有很多第三方庫可以填補這一空白。 –

+0

當然這取決於所使用的技術。如果您實現低級解析和代碼,則可以使用第三方分析器庫(Xerces for XSD 1.1仍然是beta版本,但有相同Xerces版本的兩個不同的工件!)。以JAXB爲例 - @Michael:您是否知道第三方JAXB實現或派生使用XSD 1.1,從而生成例如使用「alternatives」的類?無論如何,這取決於伊恩的需求。 –

相關問題