Dav*_*ave 5 xml xsd xml-validation xsd-validation
我正在为一个没有内容、只有属性的元素编写 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"/>
Run Code Online (Sandbox Code Playgroud)
如果 XML 包含
<VIEW Name='V_UP'></VIEW>
Run Code Online (Sandbox Code Playgroud)
或者
<VIEW Name='V_UP'/>
Run Code Online (Sandbox Code Playgroud)
效果很好。但如果 XML 包含
<VIEW Name='V_UP'>
</VIEW>
Run Code Online (Sandbox Code Playgroud)
我明白了
该元素不能包含空格。内容模型为空。
我想让 XML 的作者能够灵活地以这种方式编写 XML,但我不知道如何允许内容,而只允许空白内容。有什么建议么?
您可以使用xsd:whiteSpace
侧面并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>
Run Code Online (Sandbox Code Playgroud)
更新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>
Run Code Online (Sandbox Code Playgroud)
另请参阅:使用 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>
Run Code Online (Sandbox Code Playgroud)
更新 3:注意XSD 处理器实现方面的差异xs:whiteSpace value="collapse"
。
归档时间: |
|
查看次数: |
2686 次 |
最近记录: |