Xml 如何使id元素具有强制性并按顺序排列?

Xml 如何使id元素具有强制性并按顺序排列?,xml,xsd,Xml,Xsd,我有一个xml请求,我正试图使标记成为必需的。但将标记定位在各自的位置会让我感到困惑,因为我对xml还不熟悉。 我在java中使用SAX解析验证 <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">

我有一个xml请求,我正试图使标记成为必需的。但将标记定位在各自的位置会让我感到困惑,因为我对xml还不熟悉。 我在java中使用SAX解析验证

<?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>
xml是

<empRequest><id>5</id><fname>Samp</fname></empRequest>
5Samp
如果我需要强制检查“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。

您缺少
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>

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

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


id不需要带有“use=”required“的属性标签,元素
id也不需要它。您可以使用
minOccurs
属性来定义元素是必需的。因为
minOccurs
的默认值为1,所以您不必在架构中提供它。属性
use
用于属性定义。不允许处理指令目标与“[xX][mM][lL]”匹配。------使用您共享的相同xml和xsd获取此异常看起来像是另一个问题:看看这个:@VidyasagarSTGM:kenda正确地回答了您原来的问题。请在这里找到他的答案,并根据需要发布新的问题,而不是在评论中罗列问题。谢谢