xsd-在元素存在的地方接受xml

xsd-在元素存在的地方接受xml,xml,xsd,Xml,Xsd,我希望我的XSD接受包含已定义元素列表的XML,即使XML也包含其他元素(任何数量)。有可能吗?如果是,怎么做 我的xsd: <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="root-element"> <xs:complexType> <xs

我希望我的XSD接受包含已定义元素列表的XML,即使XML也包含其他元素(任何数量)。有可能吗?如果是,怎么做

我的xsd:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="root-element">
    <xs:complexType>
      <xs:all>
        <xs:element name="has-to-be-included1" type="xs:string"/>
        <xs:element name="has-to-be-included2" type="xs:string"/>
      </xs:all>
    </xs:complexType>
  </xs:element>
</xs:schema>

应接受的XML:

<root-element>
    <any-element-in-any-quantity/>
    <has-to-be-included1/>
    <any-element-in-any-quantity/>
    <has-to-be-included2/>
    <any-element-in-any-quantity/>
</root-element>

通过声明,这在某种程度上是可能的,但是对于声明/未声明的元素可以自由混合的程度有限制

查看底漆的这一部分,并举例说明:

请注意,您可以使用'processContents'属性限制或不限制“未声明”元素的命名空间。例如:

<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>

“lax”解除了解析器检查XML格式之外的内容的责任。相反,“strict”要求解析器根据该元素的XSD进行验证,例如(不一定是个好主意):


此外,对于namespace属性本身,还有一些通常很方便的速记值:###other、####targetNamespace、##local、#any(默认值)

最后,对于“未声明”属性,可以通过以下方式实现大致相同的效果:

 <xs:anyAttribute />


回到我最初的评论,你如何把它们混合在一起是有局限性的,我指的是你使用感谢你的回答。不幸的是,在xs:all中不可能使用xs:any(我必须使用xs:all,因为元素的顺序是不可预测的)。
 <xs:anyAttribute />