错误:必须引用现有的简单或复杂类型 [英] Error: Must refer to an existing simple or complex type

查看:25
本文介绍了错误:必须引用现有的简单或复杂类型的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆