Xml架构中的多个元素

时间:2010-08-13 07:28:13

标签: xsd

我有一个架构,其中有3个元素,这3个元素仍然有更多的子元素。让我们将第一个元素命名为Header,将第二个元素命名为记录,将第二个元素命名为footer。

有一个标题出现,多次出现记录和一次出现页脚。

所以模式的输入看起来像

header
record..
record..
...
..
footer

现在我的问题是。我的架构定义如下

<xs:element minOccurs="1" maxOccurs="1" name="HEADER"> 
<xs:element minOccurs="1" maxOccurs="unbounded" name="Record"> 
<xs:element minOccurs="1" maxOccurs="1" name="FOOTER">

通过此架构解析文件(带有标题2记录和页脚)。解析器识别识别标题和两个记录,并在识别第二个记录后给出异常并且不给页脚。当有2个或更多元素时,我们如何定义最大值和最小值,并且当最大值出现时,中间元素无界限

编辑:

感谢回复。这是我的xsd文件。

<?xml version="1.0" encoding="utf-8" ?>
<xs:schema xmlns:NS="sample.xsd" xmlns="sample.xsd" elementFormDefault="qualified" targetNamespace="sample.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="PTRO">
    <xs:complexType>
      <xs:sequence>


   <xs:element minOccurs="1" maxOccurs="1" name="HEADER">
   <xs:complexType>
    <xs:sequence>
    <xs:sequence>
          <xs:element minOccurs="1" maxOccurs="1" name="header_sub_element">
                <xs:simpleType>
               </xs:simpleType>
              </xs:element>
   </xs:sequence>
          </xs:sequence>
          </xs:complexType>
        </xs:element>


        <xs:element minOccurs="1" maxOccurs="unbounded" name="Record">
          <xs:complexType>
            <xs:sequence>
        <xs:sequence>
            <xs:element minOccurs="1" maxOccurs="1" name="Record_sub_element">
                <xs:simpleType>
                  <xs:restriction base="xs:string">
                    <xs:maxLength value="11" />
                  </xs:restriction>
                </xs:simpleType>
              </xs:element>
             </xs:sequence>
          </xs:sequence>
          </xs:complexType>
        </xs:element>
       <xs:element minOccurs="1" maxOccurs="1" name="FOOTER">
   <xs:complexType>
    <xs:sequence>
    <xs:sequence>
          <xs:element minOccurs="1" maxOccurs="1" name="footer_sub_element">
                <xs:simpleType>
                  <xs:restriction base="xs:string">
          <xs:maxLength value="9" />
                   </xs:restriction>
                </xs:simpleType>
              </xs:element>
   </xs:sequence>
          </xs:sequence>
          </xs:complexType>
        </xs:element>
</xs:sequence>
  </xs:complexType>
 </xs:element>
</xs:schema>

@ marc_s问题是当一个输入文件(.txt文件)包含一个标题,2个记录,页脚使用这个模式进行解析时,解析器会识别标题和记录......之后它会产生异常,因为它不承认页脚。 Record的最大值出现无限制。这是否与异常有关?

1 个答案:

答案 0 :(得分:0)

你必须使用&lt;序列&gt;&lt; / sequence&gt;而不是&lt;所有&gt;&lt; / all&gt;或者&lt;选择&gt;&lt; / choice&gt;。

那应该可以解决问题。