2017-08-03 33 views
0

如何在xs:list中表示項目(如果它包含空格)?XML xs中的轉義空間:列表

模式片段:

<xs:simpleType name="mylisttype"> 
    <xs:list itemType="xs:string" /> 
</xs:simpleType> 

<xs:element name="mylist" type="mylisttype" /> 

示例XML片段:

<mylist>item1 item2 item3 item4</mylist> 

輸出示例:

["item1", "item2", "item3", "item4"] 

示例XML片段(不正確)

<mylist>Item One Item Two Item Three Item Four</mylist> 

所需的輸出:

["Item One", "Item Two", "Item Three", "Item Four"] 

回答

0

這是規範說這是不可能的地方。

A·列表·數據類型都可以·構造·從普通的或·原始··原子·數據類型,其·詞法空間·允許空白(如字符串或任何URI)或·聯合·數據類型的任何其的{成員類型定義}的詞法空間允許空間。由於在項目的詞彙表達被映射爲值之前,·列表項在空白處被分開,所以即使項目類型原則上允許,在列表項的詞彙表示中也不會出現空白它。出於同樣的原因,當·item類型的·value空間中給定值的每個可能的詞彙表示都包含空白時,該值永遠不會作爲列表·數據類型的任何值中的項目出現。

W3C XML Schema Definition Language (XSD) 1.1 Part 2, Section 2.4.1.2

我還可以測試該逃逸空間作爲XML實體代碼&#032;也不起作用,至少在LXML(它是基於libxml2和的libxslt)後確認。

1

你不能改變的空間爲成員分隔在xs:list,你不能成員串內逃生空間

將元素用於任何不適用於的複雜列表。

閱讀關於XSD design rationale regarding custom list delimiters here


+0

我讀過這個,我不想改變分隔符。對於我的用例'xs:list'是最合適的類型。列表中的每個字符串都是一個短的原子標識符,它可能偶爾包含來自已知集合的空格字符。 –

+0

@ BenSarahGolightly:已更新的答案清楚地表明'xs:list'中的字符串中沒有空格的轉義機制。使用元素代替,無需驗證您的列表,或驗證帶外wrt XSD。 – kjhughes

+1

這應該是被接受的答案。 ty kjhughes,你救了我一些想知道的。 – user1712447