我有一个架构,其中有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的最大值出现无限制。这是否与异常有关?
答案 0 :(得分:0)
你必须使用&lt;序列&gt;&lt; / sequence&gt;而不是&lt;所有&gt;&lt; / all&gt;或者&lt;选择&gt;&lt; / choice&gt;。
那应该可以解决问题。