【问题标题】:Exception: src-resolve.4.2: Error resolving component in xsd例外:src-resolve.4.2:在 xsd 中解析组件时出错
【发布时间】:2013-10-29 14:06:18
【问题描述】:

我很想根据 xsd 验证 xml。以下是xsd

<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns="http://www.w3schools.com" targetNamespace="http://www.xxxxxxxxxxxxx/xxxxxxxx" xmlns:cl="http://www.xxxxxx/contactlist" xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">

    <xsd:complexType name="contactNumberType">
        <xsd:all>
            <xsd:element name="type" type="xsd:string" minOccurs="1" maxOccurs="1"/>
            <xsd:element name="number" type="xsd:integer" minOccurs="1" maxOccurs="1"/>
        </xsd:all>
    </xsd:complexType>

    <xsd:complexType name="contactNumbersType">
        <xsd:sequence>
            <xsd:element name="contact_number" type="contactNumberType" minOccurs="1" maxOccurs="2"/>
        </xsd:sequence>
    </xsd:complexType>

    <xsd:complexType name="contactType">
        <xsd:all>
            <xsd:element name="name" type="xsd:string" minOccurs="1" maxOccurs="1"/>
            <xsd:element name="company" type="xsd:string" minOccurs="0" maxOccurs="1"/>
            <xsd:element name="jobtitle" type="xsd:string" minOccurs="0" maxOccurs="1"/>
            <xsd:element name="emailadress" type="xsd:string" minOccurs="1" maxOccurs="1"/>
            <xsd:element name="addresses" type="addressesType" minOccurs="0" maxOccurs="1"/>
            <xsd:element name="contact_numbers" type="contactNumbersType" minOccurs="1" maxOccurs="1"/>
        </xsd:all>
    </xsd:complexType>

    <xsd:complexType name="addressType">
        <xsd:all>
            <xsd:element name="type" type="xsd:string" minOccurs="1" maxOccurs="1"/>
            <xsd:element name="street_address1" type="xsd:string" minOccurs="1" maxOccurs="1"/>
            <xsd:element name="street_address2" type="xsd:string" minOccurs="0" maxOccurs="1"/>
            <xsd:element name="suburb" type="xsd:string" minOccurs="1" maxOccurs="1"/>
            <xsd:element name="postcode" type="xsd:integer" minOccurs="1" maxOccurs="1"/>
            <xsd:element name="state" type="xsd:string" minOccurs="1" maxOccurs="1"/>
        </xsd:all>
    </xsd:complexType>

    <xsd:complexType name="contacts">
        <xsd:sequence>
            <xsd:element name="contact" type="contactType" minOccurs="1" maxOccurs="unbounded"/>
        </xsd:sequence>
    </xsd:complexType>

    <xsd:complexType name="addressesType">
        <xsd:sequence>
            <xsd:element name="address" type="addressType" minOccurs="1" maxOccurs="2"/>
        </xsd:sequence>
    </xsd:complexType>

</xsd:schema>

我收到以下异常。请帮助我了解我缺少什么

异常:src-resolve.4.2:解析组件“contactNumberType”时出错。

【问题讨论】:

    标签: xml xsd


    【解决方案1】:

    鉴于创作方法,您必须确保默认命名空间(xmlns 属性的值)与 targetNamespace 属性的值匹配。

    当您按名称引用类型、属性、attributeGroup、元素或组时,该名称是限定名称。如果您引用的名称没有前缀,则假定它位于默认命名空间中(如果指定),或者根本没有命名空间。具有http://www.w3schools.com 的默认命名空间,处理器正在寻找 {http://www.w3schools.com}contactNumberType;您的 XSD 定义了一个 {http://www.xxxxxxxxxxxxx/xxxxxxxx}contactNumberType,这显然不匹配。修复默认命名空间,修复您的引用。

    xmlns="http://www.xxxxxxxxxxxxx/xxxxxxxx" targetNamespace="http://www.xxxxxxxxxxxxx/xxxxxxxx"

    【讨论】:

    • 感谢您的帮助。我有新问题。我的 xsd 是 mycompany.com.au/contactlist" xmlns="mycompany.com.au/contactlist" xmlns:xsd="w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="qualified"> 和 xml 是 w3.org/2001/XMLSchema-instance" xmlns="mycompany.com.au/contactlist" xsi:schemaLocation="mycompany.com.au/contactlist XML_Assignment1.xsd">。现在错误是 Exception: cvc-elt.1: Cannot find the declaration of element 'contacts'
    • 我发现并修复了问题,我的 xsd 缺少 xsd:element 规范。所有元素都被称为 complexType 但没有实际元素。感谢您的帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-22
    相关资源
    最近更新 更多