假设我有一个像这样的XML元素,我正在尝试为这个元素编写XSD:
<foo name="bar">
...
</foo>
此元素的规则是:
此XSD封装了除最后一个规则之外的所有规则:
如何指定元素必须具有子元素的最后一条规则?
答案 0 :(得分:1)
使用<xs:any>
元素允许任何元素作为子内容。
符合规则的示例代码:
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="foo">
<xs:complexType>
<xs:sequence>
<xs:any minOccurs="1" maxOccurs="unbounded" />
</xs:sequence>
<xs:attribute name="bar" type="xs:string" />
</xs:complexType>
</xs:element>
</xs:schema>
您可以使用namespace
元素processContents
和<xs:any>
属性来控制允许的元素和foo子元素的验证。
答案 1 :(得分:0)
如果您不知道类型名称,那么您就不走运了。 XSD中没有任何内容表示“必须有子元素”。但是,如果您乐意将子元素限制在“儿童包装器”中,那么这样的事情对您有用:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="foo">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" name="children" type="xs:anyType" />
</xs:sequence>
<xs:attribute name="bar" type="xs:string" />
</xs:complexType>
</xs:element>
</xs:schema>
当然这意味着您必须使用xs:anyType类型。