gpt4 book ai didi

xml - 在 XSD 中,如何只允许元素内容中有空格?

转载 作者:行者123 更新时间:2023-12-04 01:56:31 25 4
gpt4 key购买 nike

我正在为一个没有内容、只有属性的元素编写 XSD,这看起来相当简单:

  <xs:complexType name="ViewElement">
<xs:attribute name="Name" type="xs:string" use="required"/>
</xs:complexType>
<xs:element name="VIEW" type="ViewElement" minOccurs="0" maxOccurs="unbounded"/>

如果 XML 包含
<VIEW Name='V_UP'></VIEW>

或者
<VIEW Name='V_UP'/>

它工作正常。但是如果 XML 包含
<VIEW Name='V_UP'>
</VIEW>

我得到

The element cannot contain white space. Content model is empty.



我希望允许 XML 的作者灵活地以这种方式编写 XML,但我无法弄清楚如何允许内容,而只能是空白内容。
有什么建议么?

最佳答案

您可以将 xsd:whiteSpace facet 与 value="collapse" 一起使用,并且需要长度为 0:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="OnlyWhiteSpaceElement">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
<xs:length value="0"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:schema>

更新 1: OP 想向 OnlyWhiteSpaceElement 添加属性
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="OnlyWhiteSpaceElement">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="OnlyWhiteSpaceType">
<xs:attribute name="Name" type="xs:string" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>

<xs:simpleType name="OnlyWhiteSpaceType">
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
<xs:length value="0"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>

另见: Restrict complexType with attributes in XSD?

更新 2: OP 想重用当前的匿名复杂类型。让我们定义一个命名类型并重构正在使用的名称......
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:element name="OnlyWhiteSpaceElement" type="OnlyWhiteSpaceType"/>

<xs:complexType name="OnlyWhiteSpaceType">
<xs:simpleContent>
<xs:extension base="OnlyWhiteSpaceContentType">
<xs:attribute name="Name" type="xs:string" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>

<xs:simpleType name="OnlyWhiteSpaceContentType">
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
<xs:length value="0"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>

更新 3: 注意 XSD processor implementation differences regarding xs:whiteSpace value="collapse"

关于xml - 在 XSD 中,如何只允许元素内容中有空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50178201/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com