包含未定义内容的XSD元素

包含未定义内容的XSD元素,xsd,Xsd,我需要装配一个XSD模式来部分验证文件。文件结构为: <Root> <Node name="core"> <ElementA>String</ElementA> <ElementB>String</ElementB> </Node> <Node name="something unique"> (any number of ele

我需要装配一个XSD模式来部分验证文件。文件结构为:

<Root>
    <Node name="core">
        <ElementA>String</ElementA>
        <ElementB>String</ElementB>
    </Node>
    <Node name="something unique">
        (any number of elements, with unknown names and types)
    </Node>
</Root>

一串
一串
(任意数量的元素,名称和类型未知)
我的XSD类似于:

<xs:element name="Root">
    <xs:complexType>
        <xs:sequence maxOccurs="unbounded">
            <xs:element name="Node">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element maxOccurs="unbounded" />
                    </xs:sequence>                        
                    <xs:attribute name="name" type="xs:string" />
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
</xs:element>

不完整且不完全正确,未命名的
无效

需要几个节点,每个节点都有唯一的name属性;这就是我想要验证的。名称列表以及这些节点的内容是预定义的

具有未知名称的节点的内容也是未知的,可以包含任意数量的具有任何名称和类型的元素,但其本身不得具有属性或值

我遇到的问题是允许子元素而不知道它们的名称

有可能用XSD做这样的事情吗?有没有一种方法可以拥有复杂类型的元素或anyType和属性

编辑:使用
名称作为元素类型,然后只允许使用未知名称的其他元素,这也是可以接受的。无论哪种方式,我都需要允许具有未知名称和类型的节点。

要允许“不知道名称的子元素”,您可以使用xsd:any;将其作为重复粒子添加到特定(在“设计时”已知)内容之后



那么您建议区分必需元素和可选元素?在这种情况下,有两个(或更多)名字吗?是的。但是,如果这是您的意思,您不必将xsd:any放在包装器元素下;然而,这是一种相当普遍的模式。不过,我会做一件不同的事情,那就是为Extensions元素定义一个全局复杂类型,允许使用您的模式的人自己重新定义,以防他们想要“强类型”它。我只是想快速向您展示xsd:any如何以我理解的方式满足您的需求。
<?xml version="1.0" encoding="utf-8"?>
<!--W3C Schema generated by QTAssistant/W3C Schema Refactoring Module (http://www.paschidev.com)-->
<xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:element name="Root">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="Node">
          <xsd:complexType>
            <xsd:sequence>
              <xsd:element name="ElementA" type="xsd:string" />
              <xsd:element name="ElementB" type="xsd:string" />
            </xsd:sequence>
            <xsd:attribute name="name" type="xsd:string" use="required" />
          </xsd:complexType>
        </xsd:element>
        <xsd:element name="Extensions" minOccurs="0">
            <xsd:complexType>
                <xsd:sequence>
                    <xsd:any maxOccurs="unbounded"     processContents="lax"/>
                </xsd:sequence>
                <xsd:anyAttribute processContents="lax"/>
            </xsd:complexType>
        </xsd:element>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>