XML xs中的转义空间:list

时间:2017-08-03 20:45:38

标签: xml xsd schema

如果xs:list中的项目包含空格,您如何表示该项?

架构片段:

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

2 个答案:

答案 0 :(得分:1)

您无法在xs:list中更改空格作为成员分隔符,也无法转义成员字符串中的空格

将元素用于不适合xs:list的任何更复杂的列表。

了解XSD design rationale regarding custom list delimiters here

答案 1 :(得分:0)

这是规范说这是不可能的。

  

一个·list·数据类型可以由普通的或原始的·原子数据类构成,它的词汇空间·允许空格(如string或anyURI)或者{union·datatype中的任何一个{member type定义}的词汇空间·允许空间。由于·list·items在项目的词汇表示之前在空格中分隔,因此在列表项目的词法表示中不会出现任何空格,即使项目类型原则上允许它。出于同样的原因,当·项类型的值空间中的给定值的每个可能的词法表示·包括空格时,该值永远不会作为·list·datatype的任何值中的项出现。 / p>

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

我还可以在测试之后确认转义空间,因为XML实体代码&#032;也不起作用,至少在lxml(基于libxml2和libxslt)中。