Yoshitaka Shibusawa created CXF-7428:
----------------------------------------

             Summary: Enabling schema validation and running it can not resolve 
namespace.(cvc-elt.1)
                 Key: CXF-7428
                 URL: https://issues.apache.org/jira/browse/CXF-7428
             Project: CXF
          Issue Type: Bug
          Components: JAXB Databinding
         Environment: Java 1.8.0_51,
Spring Framework 4.0.6,
Windows 10
            Reporter: Yoshitaka Shibusawa


Depending on how WSDL is defined, it is the same namespace ("urn: hl7 - org: 
v3"), but schema validation does not recognize the xsd file.
The way of defining WSDL is the way to include "schema file (xsd)" for each 
file as follows and the way to include it together.
It seems that you can recognize namespace only for the first file 
(PRPA_IN201301UV02.xsd).
For the same namespace, I think it is correct to merge the schema information 
("urn:hl7-org:v3") and store it in "schemaSourcesMap 2" and execute the schema 
validation.

Probably to fix it:
org.apache.cxf.ws.addressing.EndpointReferenceUtils#createSchema(ServiceInfo, 
Bus)
「si.getSystemId()」→Type(types1...)
------------------------------------------------------------
PIXManager.wsdl#types1:urn:hl7-org:v3
PIXManager.wsdl#types2:urn:hl7-org:v3
PIXManager.wsdl#types3:urn:hl7-org:v3
PIXManager.wsdl#types4:urn:hl7-org:v3
PIXManager.wsdl#types5:urn:hl7-org:v3
PIXManager.wsdl#types6:urn:hl7-org:v3
 ↓ merge key is "urn:hl7-org:v3"
PIXManager.wsdl#types1:urn:hl7-org:v3
------------------------------------------------------------

The meanings of the WSDL definitions of the failing case and the succeeding 
case are the same as shown below.

A case where the namespace can not be recognized correctly
An example of defining a schema element for each xsd file(※1)

<types>
    <xsd:schema elementFormDefault="qualified" targetNamespace="urn:hl7-org:v3" 
xmlns:hl7="urn:hl7-org:v3">
        <xsd:include 
schemaLocation="../schema/HL7V3/NE2008/multicacheschemas/PRPA_IN201301UV02.xsd"/>
    </xsd:schema>
    <xsd:schema elementFormDefault="qualified" targetNamespace="urn:hl7-org:v3" 
xmlns:hl7="urn:hl7-org:v3">
        <xsd:include 
schemaLocation="../schema/HL7V3/NE2008/multicacheschemas/PRPA_IN201302UV02.xsd"/>
    </xsd:schema>
    <xsd:schema elementFormDefault="qualified" targetNamespace="urn:hl7-org:v3" 
xmlns:hl7="urn:hl7-org:v3">
        <xsd:include 
schemaLocation="../schema/HL7V3/NE2008/multicacheschemas/PRPA_IN201304UV02.xsd"/>
    </xsd:schema>
    <xsd:schema elementFormDefault="qualified" targetNamespace="urn:hl7-org:v3" 
xmlns:hl7="urn:hl7-org:v3">
        <xsd:include 
schemaLocation="../schema/HL7V3/NE2008/multicacheschemas/MCCI_IN000002UV01.xsd"/>
    </xsd:schema>
    <xsd:schema elementFormDefault="qualified" targetNamespace="urn:hl7-org:v3" 
xmlns:hl7="urn:hl7-org:v3">
        <xsd:include   
schemaLocation="../schema/HL7V3/NE2008/multicacheschemas/PRPA_IN201309UV02.xsd"/>
    </xsd:schema>
    <xsd:schema elementFormDefault="qualified" targetNamespace="urn:hl7-org:v3" 
xmlns:hl7="urn:hl7-org:v3">
        <xsd:include 
schemaLocation="../schema/HL7V3/NE2008/multicacheschemas/PRPA_IN201310UV02.xsd"/>
    </xsd:schema>
</types>

A case where the namespace can be recognized correctly
An example of defining a schema element by combining xsd files


<types>
        <xsd:schema elementFormDefault="qualified" 
targetNamespace="urn:hl7-org:v3" xmlns:hl7="urn:hl7-org:v3">
            <!-- Include the message schema -->
            <xsd:include 
schemaLocation="../schema/HL7V3/NE2008/multicacheschemas/PRPA_IN201301UV02.xsd"/>
            <xsd:include 
schemaLocation="../schema/HL7V3/NE2008/multicacheschemas/PRPA_IN201302UV02.xsd"/>
            <xsd:include 
schemaLocation="../schema/HL7V3/NE2008/multicacheschemas/PRPA_IN201304UV02.xsd"/>
            <xsd:include 
schemaLocation="../schema/HL7V3/NE2008/multicacheschemas/MCCI_IN000002UV01.xsd"/>
            <xsd:include 
schemaLocation="../schema/HL7V3/NE2008/multicacheschemas/PRPA_IN201309UV02.xsd"/>
            <xsd:include 
schemaLocation="../schema/HL7V3/NE2008/multicacheschemas/PRPA_IN201310UV02.xsd"/>
        </xsd:schema>
</types>

(※1)
WSDL is shared worldwide
【IHE Technical Frameworks】
#############################################
Appendix W: Implementation Material
Implementation material for ITI profiles such as XDS, XCA, RFD, and others can 
be found on the IHE FTP site under 
ftp://ftp.ihe.net/TF_Implementation_Material/ITI/.
Some of the types of implementation material available are schema, examples and 
informative WSDL.
#############################################

I will attach Junit in the above two cases.

【JUnit】
1.Original WSDL
ftp://ftp.ihe.net/TF_Implementation_Material/ITI/wsdl/PIXManager.wsdl

A case where the namespace can not be recognized correctly
Try running Junit 
mvn test -Dtest=ihe.iti.pixv3.manager.FailTest

2.The modified PIXManager.wsdl has the same meaning as the schema definition.

A case where the namespace can be recognized correctly
Try running Junit
mvn test -Dtest=ihe.iti.pixv3.manager.SuccessTest



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to