XML(XSD)How To:Element content是另一个元素的名称

XML(XSD)How To:Element content是另一个元素的名称,xml,xsd,Xml,Xsd,我试图弄清楚如何编写XSD模式,以便正确表示元素引用。下面是一个简短的例子,解释了我想要实现的目标。 我有一些基本元素,它们都有不同的(唯一的)名称。我希望通过按名称引用它们,将它们分组到一个更大的元素中 XML文件: <?xml version="1.0" encoding="UTF-8"?> <RootNode> <BasicElements> <BasicElement name="Element1"/> <Basi

我试图弄清楚如何编写XSD模式,以便正确表示元素引用。下面是一个简短的例子,解释了我想要实现的目标。 我有一些基本元素,它们都有不同的(唯一的)名称。我希望通过按名称引用它们,将它们分组到一个更大的元素中

XML文件:

<?xml version="1.0" encoding="UTF-8"?>
<RootNode>
  <BasicElements>
    <BasicElement name="Element1"/>
    <BasicElement name="Element2"/>
    <BasicElement name="Element3"/>
  <BasicElements>

  <ElementGroups>
    <ElementGroup name="ElementsAlongAPath">
      <LeftSide>Element1</LeftSide>
      <RightSide>Element2></RightSide>
    </ElementGroup>
    <ElementGroup name=OtherElementsAlongAPath">
      <LeftSide>Element2</LeftSide>
      <RightSide>Element3</RightSide>
    </ElementGroup>
  </ElementGroups>
</RootNode>

要素1
元素2>

这就是
key
keyref
的用途。在
RootNode
级别,定义一个键,使每个
//BasicElement
都有一个独特的
@name
,并定义一个
keyref
,表示每个
//LeftSide
//Rightside
都必须是对这些键之一的引用

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="TestNS" xmlns:test="TestNS">
  <xs:element name="RootNode">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="test:BasicElements" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="test:ElementGroups" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="BasicElements">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="test:BasicElement" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="BasicElement">
    <!--Attributes, stuff... -->
  </xs:element>
  <xs:element name="ElementGroups">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="test:ElementGroup" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="ElementGroup">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="LeftSide" minOccurs="0" maxOccurs="1">
          <!-- How to express reference to BasicElement here ?-->
        </xs:element>
        <xs:element name="RightSide" minOccurs="0" maxOccurs="1">
          <!-- How to express reference to BasicElement here ?-->
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>