如何使id元素成为必需的顺序?

时间:2016-09-22 07:40:20

标签: xml xsd

我正在尝试使用xml请求强制使用标记。但是将标签放在相应的位置会让我感到困惑,因为我是xml的新手。 我在java中使用SAX解析验证。

xml是

<empRequest><id>5</id><fname>Samp</fname></empRequest>

如果我需要将'id'检查为强制性

以下是我的xsd文件。我觉得需要进行适当的重新定位验证。

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    elementFormDefault="qualified" attributeFormDefault="unqualified">

<xs:element name="empRequest">
<xs:complexType>
        <xs:element name="id" type="xs:int">
            <xs:complexType>
                <xs:simpleContent>
                    <xs:extension base="xs:int">
                        <xs:attribute name="id" use="required"> 
                        </xs:attribute>  
                    </xs:extension>
                </xs:simpleContent>
                </xs:complexType>
         </xs:element>
    <xs:element name="fname" type="xs:string"></xs:element>
    </xs:complexType>
</xs:element>

请帮我准确的xsd请求。

2 个答案:

答案 0 :(得分:1)

您缺少xs:sequence标记。此外,您尝试在元素id中允许属性id。这似乎不是你想要的。因此,假设元素id是必需的而fname不是,那么这将是XML模式:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    elementFormDefault="qualified" attributeFormDefault="unqualified">
  <xs:element name="empRequest">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="id" type="xs:int"></xs:element>
        <xs:element name="fname" type="xs:string" minOccurs="0"></xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

答案 1 :(得分:0)

在元素标记内使用minOccurs =“1”:

<xsd:element name="id" type="xs:int" minOccurs="1" maxOccurs="unbounded">