错误:必须引用现有的简单或复杂类型 [英] Error: Must refer to an existing simple or complex type
本文介绍了错误:必须引用现有的简单或复杂类型的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在 Altova 工作,我正在为我的 XML 文件创建一个 XSD 文件,但我的代码没有验证.我收到错误:
I'm working in Altova and I'm creating an XSD file for my XML file and my code does not validate. I get the error:
必须引用现有的简单或复杂类型
Must refer to an existing simple or complex type
我不知道为什么,因为我给元素名称 titel
赋予了一个简单类型.
and I don't know why, because I've given a simpletype to the element name titel
.
有人知道我做错了什么吗?
Does anyone know what I'm doing wrong?
附言不要介意标签中的值.
P.S. Don't mind the values within the tags.
这是 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>
推荐答案
为了消除这个错误,
必须引用现有的简单或复杂类型
Must refer to an existing simple or complex type
正确定义命名空间前缀(ns1),
properly define a namespace prefix (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>
这篇关于错误:必须引用现有的简单或复杂类型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文