XSD: Cannot resolve the name 'type' to a(n) 'type definition' component
Asked Answered
R

2

15

I am defining the schema but on validating it in eclipse it gives following error.

src-resolve: Cannot resolve the name 'common:Name' to a(n) 'type definition' component.

My schema looks like following:

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema targetNamespace="http://www.mycompany.com/myproject/service/v1"              xmlns:xsd="http://www.w3.org/2001/XMLSchema"
        xmlns:tns="http://www.mycompany.com/myproject/service/v1"            
        xmlns:product="http://www.mycompany.com/otherproject/service/products/v1"
        xmlns:common="http://www.mycompany.com/myproject/service/common/v1" elementFormDefault="qualified">

<xsd:import namespace="http://www.mycompany.com/otherproject/service/products/v1" schemaLocation="products_v1.xsd" />
<xsd:import namespace="http://www.mycompany.com/myproject/service/common/v1" schemaLocation="common_v1.xsd" />          

<xsd:element name="GetProductRequest" type="tns:GetProductRequest">
    <xsd:annotation>
        <xsd:documentation>Get Product Request</xsd:documentation>
    </xsd:annotation>
</xsd:element>  

<xsd:complexType name="GetProuctRequest">
    <xsd:annotation>
        <xsd:documentation>Get Product Request</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>

        <xsd:element name="ID" type="common:ID" minOccurs="1" maxOccurs="1">
            <xsd:annotation>
                <xsd:documentation>ID</xsd:documentation>
            </xsd:annotation>
        </xsd:element>


        <xsd:element name="Name" type="common:Name" minOccurs="1" maxOccurs="1">
            <xsd:annotation>
                <xsd:documentation>Name</xsd:documentation>
            </xsd:annotation>
        </xsd:element>  

    </xsd:sequence>
</xsd:complexType>

.....

and common_v1.xsd looks like following

<xsd:schema targetNamespace="http://www.mycompany.com/myproject/service/common/v1" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
        xmlns:tns="http://www.mycompany.com/myproject/service/common/v1" 
        elementFormDefault="qualified">


<xsd:complexType name="ID">
    <xsd:annotation>
        <xsd:documentation>ID</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
        <xsd:element name="X" type="xsd:string" minOccurs="1" maxOccurs="1">
            <xsd:annotation>
                <xsd:documentation>X</xsd:documentation>
            </xsd:annotation>
        </xsd:element>
        <xsd:element name="Y" type="xsd:string" minOccurs="1" maxOccurs="1">
            <xsd:annotation>
                <xsd:documentation>Y</xsd:documentation>
            </xsd:annotation>
        </xsd:element>
    </xsd:sequence>
</xsd:complexType>  

<xsd:element name="Name" type="xsd:string">
    <xsd:annotation>
        <xsd:documentation>Name</xsd:documentation>
    </xsd:annotation>
</xsd:element>
......

Problem is my schema is able to resolve some of the elements from common_v1.xsd and some not. In above code common:ID does not give any error but common:Name gives error.

I am not able to understand why some of the elements are not resolved.

Rehnberg answered 30/12, 2014 at 13:53 Comment(0)
D
10

From what you show it looks like you have an element Name in the common namespace, but not the type and you're trying to use the type here:

    <xsd:element name="Name" type="common:Name" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
            <xsd:documentation>Name</xsd:documentation>
        </xsd:annotation>
    </xsd:element>

So either create a type common:Name or use <xsd:element ref="common:Name" .../> instead.

Diskin answered 30/12, 2014 at 13:59 Comment(0)
N
2
    <?xml version="1.0" encoding="UTF-8"?>
    <schema xmlns="http://www.w3.org/2001/XMLSchema" 
    targetNamespace="http://www.bharatsecurity.com/Patients"
     xmlns:tns="http://www.bharatsecurity.com/Patients" 
     elementFormDefault="qualified">
    <element name="patient" type="tns:Patients"></element>

You need to write complex type for this tns otherwise it will result in cannot resolve type (n) error like:

    <complexType name="Patients">
    <sequence>
    <element name="id" type="int" />
    <element name="name" type="string"></element>
    <element name="gender" type="string"></element>
    <element name="age" type="int"></element>
    </sequence>
    </complexType>
    </schema>
Nasopharynx answered 28/10, 2017 at 6:22 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.