带有未定义内容的XSD元素

ssu*_*ube 3 xsd

我需要安装一个部分验证文件的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>
Run Code Online (Sandbox Code Playgroud)

我的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>
Run Code Online (Sandbox Code Playgroud)

哪个不完整而且不完全正确,未命名<xs:element>无效.

有几个节点是必需的,每个节点都有一个唯一的名称属性; 这是我想验证的.名称列表和这些节点的内容是预定义的.

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

我遇到麻烦的部分是允许子元素而不知道他们的名字.

是否可以使用XSD执行此类操作?有没有办法拥有复杂类型的元素,或anyType和属性?

编辑:使用<Node> names作为元素类型,然后简单地允许具有未知名称的其他元素也是可接受的.无论哪种方式,我需要允许具有未知名称和类型的节点.

Pet*_*dea 8

要允许"子元素不知道其名称",您可以使用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>
Run Code Online (Sandbox Code Playgroud)