我在Altova工作,我正在为我的XML文件创建一个XSD文件,而我的代码无法验证。我收到错误:
必须引用现有的简单或复杂类型
并且我不知道为什么,因为我已经为元素名titel
提供了一个简单的类型。
有谁知道我做错了什么?
P.S。不要介意标签中的值。
这是XSD文件:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.w3schools.com CDS.xsd" xmlns:ns1="http://www.w3schools.com" targetNamespace="http://www.w3schools.com" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="catalogus" type="alles"/>
<xs:complexType name="alles">
<xs:sequence>
<xs:element name="CD">
<xs:complexType>
<xs:sequence>
<!-- Elements -->
<xs:element name="titel" type="titelnaam"/>
<xs:element name="uitvoerder"/>
<xs:element name="uitgever"/>
<xs:element name="genre"/>
<xs:element name="prijs"/>
<xs:element name="jaar"/>
<xs:element name="behuizing"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<!-- simpleTypes -->
<xs:simpleType name="titelnaam">
<xs:restriction base="xs:string">
<xs:pattern value="\d{3}-\d{1}-\d{3}-\d{5}-\d{1}"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
这是XML文件:
<?xml version="1.0"?>
<!DOCTYPE catalogus SYSTEM "CDS.dtd">
<catalogus>
<CD>
<titel>Until Dawn</titel>
<uitvoerder>Nirvana</uitvoerder>
<uitgever>No Clue Music</uitgever>
<genre>Jazz</genre>
<prijs valuta="EU">19,95</prijs>
<jaar>2002</jaar>
<behuizing>double</behuizing>
<tracks>
<track>
<nummer>Break away</nummer>
<componist>Nirvana</componist>
<tekstschrijver>Nirvana</tekstschrijver>
<tijdsduur tijd="mm.ss">02.55</tijdsduur>
<uitvoerder>Nirvana</uitvoerder>
</track>
<track>
<nummer>Bananas</nummer>
<componist>Nirvana</componist>
<tekstschrijver>Nirvana</tekstschrijver>
<tijdsduur tijd="mm.ss">03.55</tijdsduur>
<uitvoerder>Nirvana</uitvoerder>
</track>
</tracks>
</CD>
</catalogus>
答案 0 :(得分:2)
要消除此错误,
必须引用现有的简单或复杂类型
正确定义名称空间前缀( ns1 ),
xmlns:ns1="http://www.w3schools.com/CDS.xsd"
覆盖目标命名空间
targetNamespace="http://www.w3schools.com/CDS.xsd"
并使用它来引用类型:
<xs:element name="catalogus" type="ns1:alles"/>
...共
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:ns1="http://www.w3schools.com/CDS.xsd"
targetNamespace="http://www.w3schools.com/CDS.xsd"
elementFormDefault="qualified"
attributeFormDefault="unqualified">
<xs:element name="catalogus" type="ns1:alles"/>
<xs:complexType name="alles">
<xs:sequence>
<xs:element name="CD">
<xs:complexType>
<xs:sequence>
<!-- Elements -->
<xs:element name="titel" type="ns1:titelnaam"/>
<xs:element name="uitvoerder"/>
<xs:element name="uitgever"/>
<xs:element name="genre"/>
<xs:element name="prijs"/>
<xs:element name="jaar"/>
<xs:element name="behuizing"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<!-- simpleTypes -->
<xs:simpleType name="titelnaam">
<xs:restriction base="xs:string">
<xs:pattern value="\d{3}-\d{1}-\d{3}-\d{5}-\d{1}"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>