我想创建一个 XSD 架构,其中只有根元素及其直接子元素由 XSD 监管。换句话说,我想允许根元素的任意孙元素,而根元素和子元素由 XSD 严格验证。所以如果我有
<text>
<language>
...
</language>
</text>
它应该强制存在文本和语言,但不限制我在 的级别下添加哪种 XML 标记。
这可能吗?我使用过XSD,但程度不大,找不到参考,既没有说明我能做到,也没有说禁止这样做。
在孙子级别使用 xsd:any:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
version="1.0">
<xs:element name="text">
<xs:complexType>
<xs:sequence>
<xs:element name="language">
<xs:complexType>
<xs:sequence>
<xs:any/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
其他注意事项:
- 调整基数约束(
minOccurs
和maxOccurs
)您的需求。 - 为混合内容(文本和元素)添加
mixed="true"
需要。