我正在使用:
我创建了一个新项目(File-> New Project ...)并添加了两个文件(New-> File):
cd.xsd和cd-istance.xml。这些文件位于同一个项目(文件夹)中。
我没有像New-> XML这样的菜单...... 我在编写xml时也没有能够验证xsd的xml istance,也没有在xml完成时验证(没有Preference-> Validate选项或类似的东西)。
实际上,我不知道对我的xsd的引用是否正确或Eclipse是否无法正常工作。
此后为cd.xsd。
<?xml version="1.0" encoding ="UTF-8"?>
<xs:schema
xmlns:xs = "http://www.w3.org/2001/XMLSchema"
elementFormDefault = "qualified"
>
<xs:simpleType name = "artist" >
<xs:restriction base="xs:string">
<xs:length value= "5">
</xs:length>
</xs:restriction>
</xs:simpleType>
<xs:element name = "title" type = "xs:string"></xs:element>
<xs:element name = "year" type = "xs:gYear"></xs:element>
<xs:element name = "song" >
<xs:complexType name = "songType">
<xs:sequence>
<xs:element ref="artist" minOccur="0"></xs:element>
<xs:element ref="title" minOccur="0" maxOccur="1"></xs:element>
<xs:element ref="year" maxOccur="1"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
此后cd-istance.xml:
<?xml version="1.0" encoding ="UTF-8"?>
<CD
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamSpaceSchemaLocation="cd.xsd"
>
<artist> </artist>
<title> la prova</title>
<title> la prova2 </title>
</CD>
我期待至少两个错误,一个是艺术家(一个是空的),另一个是标题(违反了发生的约束)。
我做过一些尝试,只是提到一些:
xsi:noNamSpaceSchemaLocation="./cd.xsd"
xsi:targetLocation="./cd.xsd"
(&#34; cd.xsd&#34;)并添加了targetNameSpace="www.mynamespace.com"
(这是假地址)提前谢谢你。
答案 0 :(得分:0)
您拼错了将架构绑定到文件的xsi:noNameSpaceSchemaLocation
属性。您的文件标题应为:
<CD xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNameSpaceSchemaLocation="cd.xsd"> ...
如果您仍然无法在您的环境中进行验证,则可以使用this one等在线服务。
我粘贴了您的实例和XSD并对其进行了一些更改以进行验证。我将链接保存在fiddle中。
XSD中的问题是:
</xs:schema>
标记。CD
个元素。将<xs:element name="song">
替换为<xs:element name="CD">
。maxOccurs
和minOccurs
属性在多个地方拼写错误。complexType
元素定义中有一个名为song
的嵌套。如果您有嵌套complexType
,则不应该有name
。将其设为顶级或删除name
属性。artist
的元素。但是,有一个带有该名称的类型。您可以将simpleType
嵌套在<xs:element name="artist">
声明中(并从类型中删除name
属性),或将类型保留为顶级并声明<xs:element name="artist" type="artist">
引用它(您可能希望为类型和元素使用不同的名称以避免混淆):<xs:element name="artist" type="ArtistType" />
<xs:simpleType name="ArtistType" >
<xs:restriction base="xs:string">
<xs:length value="5"/>
</xs:restriction>
</xs:simpleType>
修复这些问题后,您将遇到验证错误:
<artist>
元素<title>
元素(架构允许最多一个)<year>
xs:gYear
类型的必需<title>
元素
醇>
您的代码经过验证here。您可以进行更改并查看验证结果。