2017-07-20 51 views
0

第一個問題寫在上面:我可以使用空格嗎?XML枚舉 - 使用空格並使用多個選擇的值

<xs:simpleType name="Testing"> 
    <xs:restriction base="xs:string"> 
     <xs:enumeration value="my sample spaced value"/> 
     <xs:enumeration value="my second spaced value"/> 
     <xs:enumeration value="myThirdValue"/> 
     <xs:enumeration value="myFourthValue"/> 
    </xs:restriction> 
    </xs:simpleType> 

什麼我發現是這樣的:Specify a multi-word enumeration value in an XML/DTD

但在這裏另一方面,它說,它可以是任何簡單類型:http://www.datypic.com/sc/xsd/e-xsd_enumeration.html

我能得到這個問題解決了,preferablly用鏈接到w3c規範中的段落?

第二個問題是它如何可以驗證,當我選擇一個以上的答案,所以輸出會是這樣:

<testing>myThirdValue myFourthValue</testing> 

我越來越:

CVC-枚舉有效:值'myThirdValue myFourthValue'對於枚舉'[my sample spaced value,my second spaced value,myThirdValue,myFourthValue]'不是facet-valid。它必須是枚舉中的值。

當空間被用作分隔符並且我的空間名稱中有空格時,它怎麼會不發瘋?

<testing>my sample spaced value my second spaced value</testing> 

我是否必須指定一種模式才能解析多個值?

謝謝!

回答

0

XML DTD!= XML Schema(XSD)所以你鏈接到的SO問題/答案不適用於你的問題。

According to the spec ...

4.3.5.5制約枚舉架構組件

架構組件約束:枚舉有效限制

這是一個錯誤·如果·任何成員{}值不在{base 類型定義}的·value空間中。

因此,如果您的基本類型是xs:string(如您的示例),那麼是的值可以包含空格。

(如果我正確讀取規格。測試似乎支持我的理解。)

其他例子...

如果你的基本類型爲xs:NMTOKEN,則沒有你的價值不能包含空格。

如果您的基本類型是xs:NMTOKENS(複數),那麼您的值可以包含空格。

+0

謝謝你的迴應,我在第一篇文章中給出了一些關於爲什麼讓我頭疼的信息。 – Wynarator

+0

@Wynarator - 你可以使用'xs:list'來獲得多個值,但是我不知道如果你的值有空格,你會怎麼做。 –