1

我正在为这样的 XML 文档编写模式:

<workbook>
  <worksheet>
    <column/>
  </worksheet>
</workbook>

每个节点都可以包装到 env 元素中(例如)

<workbook>
 <env>
  <worksheet>
   <column/>
  </worksheet>
 </env>
</workbook>

或者

<workbook>
 <worksheet>
  <env>
   <column/>
  </env>  
 </worksheet>
</workbook>

因此,根据 env 元素的位置,它可以有不同的子元素(工作簿的 env-child 必须有工作表子元素,工作表的 env-child 必须有列子元素)

当我将 env 元素声明为嵌套时,出现多重定义元素错误。

我怎么能为这样的文件写 xsd ,或者这有可能吗?

提前致谢!

4

1 回答 1

0

是的,这是可能的,因为您可以在不同的地方拥有具有相同名称env但具有不同类型(结构)的元素 - 一些链接:

<xs:element name="workbook">
  <xs:complexType>
    <xs:choice>
      <xs:element name="env">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="worksheet"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element ref="worksheet"/>
    </xs:choice>
  </xs:complexType>
</xs:element>

<xs:element name="worksheet">
  <xs:complexType>
    <xs:choice>
      <xs:element name="env">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="column"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element ref="column"/>
    </xs:choice>
  </xs:complexType>
</xs:element>

<xs:element name="column" type="xs:string">
</xs:element>
于 2012-11-07T00:13:35.143 回答