我正在尝试使用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请求。
答案 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">