【问题标题】:xml schema putting both sequence and all under one complexType nodexml 模式将序列和所有都放在一个 complexType 节点下
【发布时间】:2010-12-10 07:58:52
【问题描述】:

这里是xml文件:

<section>
    <number>1</number>
    <title>A Title goes here...</title>
    <code>TheCode</code>

    <element></element>
    <element></element>
</section>

在节节点中,有编号、标题和代码节点。它们的顺序不能固定。 那么,节节点下也有多个元素。

这个想法是使用以下架构:

<xs:complexType name="Type-section">

  <xs:all>
    <xs:element name="number" minOccurs="0"></xs:element>
    <xs:element name="code"  minOccurs="1"></xs:element>
    <xs:element name="title"  minOccurs="1"></xs:element>
  </xs:all>

  <xs:sequence>
    <xs:element maxOccurs="unbounded" name="element"></xs:element>
  </xs:sequence>
</xs:complexType>

但它是无效的。我只是不能将“序列”和“全部”放在同一级别。我该如何解决?

【问题讨论】:

    标签: xml schema


    【解决方案1】:

    如果顺序一定不重要,那么您可以这样做的一种方法是列出所有排列并将其作为选择。然而,随着选择数量的增长 O(n!),这将很难维护。由于 XML Schema 等限制,我不得不为我写的一些东西恢复顺序。

    例如

    <choice>
      <sequence>
        <element name="a" />
        <element name="b" />
        <element name="c" />
      </sequence>
    
      <sequence>
        <element name="a" />
        <element name="c" />
        <element name="b" />
      </sequence>
    
    
      <sequence>
        <element name="b" />
        <element name="a" />
        <element name="c" />
      </sequence>
    
    
      <sequence>
        <element name="b" />
        <element name="c" />
        <element name="a" />
      </sequence>
    
    
      <sequence>
        <element name="c" />
        <element name="a" />
        <element name="b" />
      </sequence>
    
    
      <sequence>
        <element name="c" />
        <element name="b" />
        <element name="a" />
      </sequence>
    </choice>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-20
      • 2011-09-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多