我有以下需要XSD的xml。
<?xml version="1.0" encoding="UTF-8"?>
<Metadata>
<Field Name="Claim Number">100</Field>
<Field Name="Audit Year">2010</Field>
<Field Name="Auditor Name">ABC PQR</Field>
</Metadata>
在上面的xml中,如果我删除<Field Name="Audit Year">2010</Field>
这一行,那么它必须说“Audit Year”在给定的XML中不存在。
下面是现在的XSD,但这不是一个正确的方法。
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:simpleType name="temp" >
<xs:restriction base="xs:string">
<xs:enumeration value="Audit Year" />
</xs:restriction>
<xs:element name="Metadata">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="Field">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="Name" type="temp" use="required"/>
<!--<xs:attribute name="Name" type="xs:string" use="optional" />-->
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType></xs:element></xs:schema>
答案 0 :(得分:0)
最简单的解决方案是将每个Field name="X"
元素重命名为X
,因此您的XML是
<Metadata>
<ClaimNumber>100</ClaimNumber>
<AuditYear>2010</AuditYear>
<Auditor>ABC PQR</Auditor>
</Metadata>
现在任务很简单。