Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml xsd中定义一组可能是子元素且可能重复的元素的正确方法是什么?_Xml_Xsd - Fatal编程技术网

Xml xsd中定义一组可能是子元素且可能重复的元素的正确方法是什么?

Xml xsd中定义一组可能是子元素且可能重复的元素的正确方法是什么?,xml,xsd,Xml,Xsd,我试图确定使用xsd模式定义元素的正确方法,该元素可能包含一组子元素(包括可能重复的子元素)中的任何一个 例如,给定以下XML文档: <?xml version="1.0" encoding="utf-8" ?> <EncounterDefinitions xmlns="http://lavendersoftware.org/schemas/SteamGame/Data/Xml/Encounters.xsd"> <Encounter name="Sample

我试图确定使用xsd模式定义元素的正确方法,该元素可能包含一组子元素(包括可能重复的子元素)中的任何一个

例如,给定以下XML文档:

<?xml version="1.0" encoding="utf-8" ?>
<EncounterDefinitions
  xmlns="http://lavendersoftware.org/schemas/SteamGame/Data/Xml/Encounters.xsd">
  <Encounter name="Sample Encounter">
    <Task>
      <Weapon/>
      <Weapon/>
      <Information/>
    </Task>
    <Task>
      <Tool count="3"/>
      <Ritual/>
    </Task>
  </Encounter>
</EncounterDefinitions>

到目前为止,我已经成功地完成了XSD

<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="Encounters"
    targetNamespace="http://lavendersoftware.org/schemas/SteamGame/Data/Xml/Encounters.xsd"
    elementFormDefault="qualified"
    xmlns="http://lavendersoftware.org/schemas/SteamGame/Data/Xml/Encounters.xsd"
    xmlns:mstns="http://lavendersoftware.org/schemas/SteamGame/Data/Xml/Encounters.xsd"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
>    
  <!-- attribute types -->
  <xs:attribute name="name"  type="xs:string" />

  <!-- complex types -->

  <xs:element name="Task">
    <xs:complexType>
      <xs:sequence>
        <!-- This type here should be any of a set of Elements -->
        <xs:element name="Objective" type="Objective"/>
      </xs:sequence>
    </xs:complexType>  
  </xs:element>

  <xs:element name="Encounter">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="Task"/>
      </xs:sequence>
      <xs:attribute ref="name" use="required"/>
    </xs:complexType>
  </xs:element>

  <xs:element name="EncounterDefinitions">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="Encounter"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

如果子项的顺序或每个子项的出现次数没有限制,请使用重复选择:

<xs:complexType>
  <xs:choice maxOccurs="unbounded">
    <xs:element name="Objective" type="Objective"/>
    <xs:element name="Weapon" type="Weapon"/>
    <xs:element name="Information" type="Information"/>
  </xs:sequence>
</xs:complexType>