在这里使用XSD和XML进行噩梦。有一个简单的xml文件(代表我在数据库中的表)和一个XSD Schema,我试图相互验证它们,每次都会出现一些错误。最好的是不同的验证器在同一文件上显示完全不同的错误。这是我第一次处理这个并且没有使用XML的经验。有人可以请正确指出我的错误并简要解释一下吗?我不是在找你们为我做这一切。只是把我放在正确的方向。 谢谢,安迪
XSD架构
<?xml version="1.0"?>
<xs:schema version="1.0"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3schools.com"
xmlns="http://www.w3schools.com"
elementFormDefault="qualified">
<xs:element name="Users">
<xs:complexType>
<xs:sequence>
<xs:element name="user">
<xs:complexType>
<xs:sequence>
<xs:element name="userID">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="120"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="firstName">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="([a-zA-Z])*"/>
<xs:minLength value="2"/>
<xs:maxLength value="28"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="lastName">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="([a-zA-Z])*"/>
<xs:minLength value="2"/>
<xs:maxLength value="28"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="email">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$"/>
<xs:minLength value="6"/>
<xs:maxLength value="80"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="DOB">
<xs:simpleType>
<xs:restriction base="xs:date">
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="tellNo">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] "/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="userTypeID">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="120"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
XML文件
<?xml version="1.0" encoding="UTF-8"?>
<Users xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="user.xsd">
<user userid="1">
<firstName>Andrew</firstName>
<lastName>Golota</lastName>
<email>a.golota@wbc.us</email>
<DOB>1964-10-24</DOB>
<tellNo>078222446589</tellNo>
<userTypeID>1</userTypeID>
</user>
<user userid="13">
<firstName>Barrack</firstName>
<lastName>Obama</lastName>
<email>b.obama@whitehouse.us</email>
<DOB>1970-08-12</DOB>
<tellNo>079886365212</tellNo>
<userTypeID>3</userTypeID>
</user>
<user userid="11">
<firstName>Bill</firstName>
<lastName>Clinton</lastName>
<email>b.clinton@whitehouse.us</email>
<DOB>1960-12-07</DOB>
<tellNo>078537278867</tellNo>
<userTypeID>2</userTypeID>
</user>
<user userid="5">
<firstName>Michael</firstName>
<lastName>Grant</lastName>
<email>m.grant1966@wbc.us</email>
<DOB>1966-03-08</DOB>
<tellNo>078339789608</tellNo>
<userTypeID>4</userTypeID>
</user>
<user userid="2">
<firstName>Mike</firstName>
<lastName>Tyson</lastName>
<email>m.tyson@wbc.us</email>
<DOB>1966-12-01</DOB>
<tellNo>076255545422</tellNo>
<userTypeID>1</userTypeID>
</user>
<user userid="4">
<firstName>Mike</firstName>
<lastName>Mollo</lastName>
<email>m.mollo@wbc.us</email>
<DOB>1970-09-07</DOB>
<tellNo>076255545117</tellNo>
<userTypeID>3</userTypeID>
</user>
<user userid="12">
<firstName>Monica</firstName>
<lastName>Levinsky</lastName>
<email>m.levinsky@slutload.com</email>
<DOB>1988-12-06</DOB>
<tellNo>078553323285</tellNo>
<userTypeID>1</userTypeID>
</user>
<user userid="14">
<firstName>Osama</firstName>
<lastName>BinLaden</lastName>
<email>o.binladen@hideout.com</email>
<DOB>1926-06-06</DOB>
<tellNo>078552592921</tellNo>
<userTypeID>2</userTypeID>
</user>
<user userid="3">
<firstName>Riddick</firstName>
<lastName>Bowe</lastName>
<email>r.bowe@wbc.us</email>
<DOB>1962-02-14</DOB>
<tellNo>078222556575</tellNo>
<userTypeID>2</userTypeID>
</user>
<user userid="0">
<firstName>Tomasz</firstName>
<lastName>Adamek</lastName>
<email>t.adamek@wbc.us</email>
<DOB>1970-04-04</DOB>
<tellNo>077456757842</tellNo>
<userTypeID>1</userTypeID>
</user>
</Users>
答案 0 :(得分:2)
这似乎是因为targetNamespace
在您的架构中设置为"http://www.w3schools.com"
,而不是在您的XML实例中。
2个解决方案:
您需要此命名空间,并且必须在XML中设置:
<Users xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="user.xsd"
xmlns="http://www.w3schools.com">
您不需要它,您可以在架构中丢弃它,并按照以下方式修改它:
<xs:schema version="1.0"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified" attributeFormDefault="unqualified">
您会注意到您有一堆新错误,因为未声明属性userid
(实际上您声明了标记),依此类推......