[ 
http://issues.apache.org/jira/browse/XERCESJ-1112?page=comments#action_12363459 
] 

James Coughlin commented on XERCESJ-1112:
-----------------------------------------

Okay, I have found a work around but I don't like it!

Using DW1.zip as a reference:
Modify file DWDebtor.xsd to look like:
-------------------
<?xml version="1.0" encoding="utf-8" ?> 
<schema 
    xmlns="http://www.w3.org/2001/XMLSchema"; 
    targetNamespace="irmc"
    xmlns:ir="irmc"
    xmlns:ib="IRMC.Base" 
    elementFormDefault="qualified"
>
  <import namespace="IRMC.Base" schemaLocation="../DW_BaseTypes.xsd" />
 
  <redefine schemaLocation="../DW_Debtor.xsd">
                <group name="grp_SysID">
                        <sequence>
                                <element name="SysID"                           
        type="ib:bTypeSysID"            fixed="CCD" />
                        </sequence>
                </group>
  </redefine>


</schema>
-------------------

Modify file DWDebtor.xsd to look like:
-------------------
<?xml version="1.0" encoding="utf-8" ?> 
<schema 
    xmlns="http://www.w3.org/2001/XMLSchema"; 
    xmlns:ib="IRMC.Base"
    xmlns:ir="irmc"
    targetNamespace="irmc"
    elementFormDefault="qualified"
>
<import namespace="IRMC.Base" schemaLocation="./DW_BaseTypes.xsd" />
<!--
<include schemaLocation="./DW_IRMC_Common.xsd" />
-->
  <group name="grp_SysID">
    <sequence>
      <element name="SysID"                                                     
type="ib:bTypeSysID" />
    </sequence>
  </group>
  
  <group name="grp_FileHeaderGroup">
    <sequence>
      <element name="FileSeqNo"                                 
type="ib:bTypeFileSeqNo" />
      
      <group ref="ir:grp_SysID" />
      
      <element name="EffectiveDt"                               
type="ib:bTypeUSAGregorianDate" />
      <element name="RunStartDt"                                
type="ib:bTypeUSAGregorianDate" />
      <element name="RunStartTime"                      type="ib:bTypeTime" />
      <element name="SourceID"                                  
type="ib:bTypeSourceID" />
      <element name="DBName"                                            
type="ib:bTypeDBName"                                                           
        minOccurs="0" />
      <element name="RunID"                                                     
type="ib:bTypeRunID"                                                            
        minOccurs="0" />
    </sequence>
  </group>
  
  <group name="grp_FileTrailerGroup">
    <sequence>
      <element name="RunEndDt"                                  
type="ib:bTypeUSAGregorianDate" />
      <element name="RunEndTime"                                
type="ib:bTypeTime" />
    </sequence>
  </group>
  
  <complexType name="ct_Debtor_PhoneItem">
    <sequence>
      <element name="PhoneType"                                 
type="ib:bTypePhoneType" />
      <element name="PhoneNo"                                           
type="ib:bTypePhoneNo" />
      <element name="PhoneValid"                                
type="ib:bTypePhoneValid"                                       minOccurs="0" />
    </sequence>
  </complexType>
  
  <complexType name="ct_Debtor_PhoneGrp"> 
    <sequence>
      <element name="PhoneItem"                                 
type="ir:ct_Debtor_PhoneItem"                   minOccurs="0" 
maxOccurs="unbounded" />
    </sequence>
  </complexType>
  
  <complexType name="ct_Debtor_DemogItem">
    <sequence>
      <element name="DemogType"                                 
type="ib:bTypeDemogType" />
      <element name="NameTitle"                                 
type="ib:bTypeNameTitle"                                        minOccurs="0" 
/> 
      <element name="LastName"                                  
type="ib:bTypeLastName"                                         minOccurs="0" />
      <element name="FirstName"                                 
type="ib:bTypeFirstName"                                        minOccurs="0" />
      <element name="MiddleName"                                
type="ib:bTypeMiddleName"                                       minOccurs="0" />
      <element name="NameSuffix"                                
type="ib:bTypeNameSuffix"                                       minOccurs="0" />
      <element name="AddrLine1"                                 
type="ib:bTypeAddrLine"                                         minOccurs="0" />
      <element name="AddrLine2"                                 
type="ib:bTypeAddrLine"                                         minOccurs="0" />
      <element name="AddrLine3"                                 
type="ib:bTypeAddrLine"                                         minOccurs="0" />
      <element name="AddrLine4"                                 
type="ib:bTypeAddrLine"                                         minOccurs="0" />
      <element name="City"                                                      
type="ib:bTypeCity"                                                             
minOccurs="0" />
      <element name="State"                                                     
type="ib:bTypeState"                                                    
minOccurs="0" />
      <element name="Zip"                                                       
        type="ib:bTypeZip"                                                      
        minOccurs="0" />
      <element name="Country"                                           
type="ib:bTypeCountry"                                          minOccurs="0" />
      <element name="CountryID"                                 
type="ib:bTypeCountryID"                                        minOccurs="0" />
      <element name="AddrValid"                                 
type="ib:bTypeAddrValid"                                        minOccurs="0" />
      <element name="LangID"                                            
type="ib:bTypeLangID"                                                   
minOccurs="0" />
      <element name="SSN"                                                       
        type="ib:bTypeSSN"                                                      
        minOccurs="0" />
      <element name="DOB"                                                       
        type="ib:bTypeUSAGregorianDate"         minOccurs="0" />
      <element name="DriversLicense"            type="ib:bTypeDriversLicense"   
                minOccurs="0" />
            
      <element name="PhoneGrp"                                  
type="ir:ct_Debtor_PhoneGrp" />
      
      <element name="DcdDt"                                                     
type="ib:bTypeUSAGregorianDate"         minOccurs="0" />
      <element name="BKYDt"                                                     
type="ib:bTypeUSAGregorianDate"         minOccurs="0" />
      <element name="BKYSettleDt"                               
type="ib:bTypeUSAGregorianDate"         minOccurs="0" />
      <element name="BKYType"                                           
type="ib:bTypeBKYType"                                          minOccurs="0" />
      <element name="BKYCourt"                                  
type="ib:bTypeBKYCourt"                                         minOccurs="0" 
/>      
    </sequence>
  </complexType>
  
  <complexType name="ct_Debtor_DemogGrp">
   <sequence>
     <element name="DemogItem"                                  
type="ir:ct_Debtor_DemogItem"                   maxOccurs="unbounded" />
   </sequence>
  </complexType>
  
  <complexType name="ct_Debtor_ScoreItem">
    <sequence>
      <element name="ScoreType"                                 
type="ib:bTypeScoreType" />
      <element name="Score"                                                     
type="ib:bTypeScore" />
    </sequence>
  </complexType>
  
  <complexType name="ct_Debtor_ScoreGrp">
    <sequence>
      <element name="ScoreItem"                                 
type="ir:ct_Debtor_ScoreItem"                   minOccurs="0" 
maxOccurs="unbounded" />
    </sequence>
  </complexType>  


<!-- *** BEGIN: Debtor Stuff -->
        <simpleType name="bTypeDebtorUDFType">
          <restriction base="ib:bTypeNonBlankPrintableChars">
            <minLength value="1" />
            <maxLength value="15" />
          </restriction>
        </simpleType>

        <simpleType name="bTypeDebtorUDFData">
          <restriction base="ib:bTypeBlankAndPrintableChars">
            <minLength value="1" />
            <!-- <maxLength value="100" /> -->
          </restriction>
        </simpleType>
        
<!-- *** END:   Debtor Stuff --> 
   
  <complexType name="ct_Debtor_OrigBalItem">
    <sequence>
      <element name="BalType"                                           
type="ib:bTypeBalType" />
      <element name="BalAmt"                                            
type="ib:bTypeBalAmt" />
      <element name="BalDt"                                                     
type="ib:bTypeUSAGregorianDate"                         minOccurs="0" />
      
    </sequence>
  </complexType>
  
  <complexType name="ct_Debtor_OrigBalGrp"> 
    <sequence>
      <element name="OrigBalItem"                               
type="ir:ct_Debtor_OrigBalItem"             maxOccurs="unbounded" />
    </sequence>
  </complexType>
  
  <complexType name="ct_Debtor_CurrBalItem">
    <sequence>
      <element name="BalType"                                           
type="ib:bTypeBalType" />
      <element name="BalAmt"                                            
type="ib:bTypeBalAmt" />
      <!--
        default attribute only applies if element is optional (minOccurs=0) and
        tag is submitted without any data. like: <BalIntRate />
      -->
      <element name="BalIntRate"                                
type="ib:bTypeBalIntRate" default="0" minOccurs="0" />
      <element name="BalIntBalType"                     type="ib:bTypeBalType"  
                                            minOccurs="0" />
      <element name="BalDt"                                                     
type="ib:bTypeUSAGregorianDate"                         minOccurs="0" />
    </sequence>
  </complexType>
  
  <complexType name="ct_Debtor_CurrBalGrp">
    <sequence>
      <element name="CurrBalItem"                               
type="ir:ct_Debtor_CurrBalItem"             maxOccurs="unbounded" />
    </sequence>
  </complexType>
  

  
  <complexType name="ct_Debtor_DebtorUDFItem">
    <sequence>
      <element name="DebtorUDFType"                     
type="ir:bTypeDebtorUDFType" />
      <element name="DebtorUDFData"                     
type="ir:bTypeDebtorUDFData" />
    </sequence>
  </complexType>
  
  <complexType name="ct_Debtor_DebtorUDFGrp">  
    <sequence>
      <element name="DebtorUDFItem"                     
type="ir:ct_Debtor_DebtorUDFItem"     minOccurs="0" maxOccurs="unbounded" />
    </sequence>
  </complexType>
  
  <complexType name="ct_Debtor_DB">
    <sequence>
      <element name="RecAction"                                 
type="ib:bTypeRecAction" />
      <element name="PacketID"                                  
type="ib:bTypePacketID"                                                         
minOccurs="0" />
      <element name="IRMCAcctNo"                                
type="ib:bTypeIRMCAcctNo" />
      <element name="UAcctNo"                                           
type="ib:bTypeUAcctNo" />
      <element name="ClientID"                                  
type="ib:bTypeClientID" />
      <element name="MainClientID"                      
type="ib:bTypeMainClientID"                                             
minOccurs="0" />
      <element name="ServiceID"                                 
type="ib:bTypeServiceID"                                                        
minOccurs="0" />
      <element name="LocID"                                                     
type="ib:bTypeLocID" />
      <element name="IRMCLocation"                      
type="ib:bTypeIRMCLocation" />
      <element name="DeskID"                                            
type="ib:bTypeDeskID"                                                           
        minOccurs="0" />
      <element name="CollectorID"                               
type="ib:bTypeCollectorID"                                              
minOccurs="0" />
      <element name="PlaceDt"                                           
type="ib:bTypeUSAGregorianDate" />
      <element name="LoadDt"                                            
type="ib:bTypeUSAGregorianDate" />
      <element name="StatusCode"                                
type="ib:bTypeStatusCode" />
      <element name="StatusCodeDt"                      
type="ib:bTypeUSAGregorianDate"                         minOccurs="0" />
      <element name="DispCode"                                  
type="ib:bTypeDispCode"                                             
minOccurs="0" />
      <element name="CurrencyID"                                
type="ib:bTypeCurrencyID" />
      
      <element name="OrigBalGrp"                                
type="ir:ct_Debtor_OrigBalGrp" />
      <element name="CurrBalGrp"                                
type="ir:ct_Debtor_CurrBalGrp" />
      
      <element name="CommPct"                                           
type="ib:bTypeCommPct"                                              
minOccurs="0" />
      <element name="IntEffDt"                                  
type="ib:bTypeUSAGregorianDate"                         minOccurs="0" />
      <element name="LastIntDt"                                 
type="ib:bTypeUSAGregorianDate"                         minOccurs="0" />
      <element name="Reason"                                            
type="ib:bTypeReason"                                                       
minOccurs="0" />
      <element name="CliAcctNo"                                 
type="ib:bTypeCliAcctNo"                                                        
minOccurs="0" />
      <element name="AltAcctNo"                                 
type="ib:bTypeAltAcctNo"                                                        
minOccurs="0" />
      <element name="LastChargeDt"                      
type="ib:bTypeUSAGregorianDate"                         minOccurs="0" />
      <element name="ChargeOffDt"                               
type="ib:bTypeUSAGregorianDate"                         minOccurs="0" />
      
      <element name="DemogGrp"                                  
type="ir:ct_Debtor_DemogGrp" />
      <element name="ScoreGrp"                                  
type="ir:ct_Debtor_ScoreGrp" />
      <element name="DebtorUDFGrp"                      
type="ir:ct_Debtor_DebtorUDFGrp" />     
    </sequence>   
  </complexType>

  <complexType name="ct_Debtor_DBGrp">
    <sequence>
      <element name="DB"                                                        
        type="ir:ct_Debtor_DB"                                              
minOccurs="0"       maxOccurs="unbounded">
      </element>
    </sequence>
  </complexType>
  
  <complexType name="ct_Debtor_DebtorFile">
    <sequence>
      <group ref="ir:grp_FileHeaderGroup" />
    
      <element name="DBGrp"                                                     
type="ir:ct_Debtor_DBGrp">
      
      <!--
        Should be enforced. Temprorarily disabled.
        
                                <unique name="UniquenessConstraint_UAcctNo">
                                        <selector xpath="ir:DB/ir:UAcctNo"  />
                                        <field    xpath="." />
                                </unique>
                        -->      
      </element>
      
      <group ref="ir:grp_FileTrailerGroup" />
    </sequence>
  </complexType>
  
  <element name="DebtorFile"                                            
type="ir:ct_Debtor_DebtorFile" />
   
</schema>

-------------------

What was done to the above file was to comment out the include for file: 
./DW_IRMC_Common.xsd
and to physically include its contents in file DWDebtor.xsd

This gets around the initial error.
However if you remove the directly copy contents of file: ./DW_IRMC_Common.xsd 
and re-implement the include,
the following problem reappears:

[Error] DW_IRMC_Common.xsd:12:27: mg-props-correct.2: Circular definitions 
detected for group ':grp_SysID_fn3dktizrknc9pi'. Recursively following the 
{term} values of the particles leads to a particle whose {term} is the group 
itself.
[Error] DW_IRMC_Common.xsd:12:27: src-redefine.6.2.1: No group in the redefined 
schema has a name matching 'grp_SysID'.

I don't see the "usage" difference in logically including via an <include> or 
physically including. All the object should be treated that same. Logically 
including makes the physical deployment more flexible.


> The parser do no support multiple inclusions of the same "sub"-schema
> ---------------------------------------------------------------------
>
>          Key: XERCESJ-1112
>          URL: http://issues.apache.org/jira/browse/XERCESJ-1112
>      Project: Xerces2-J
>         Type: Bug
>   Components: XML Schema Structures
>     Versions: 2.7.1
>  Environment: Any platform. Problem exists on any version of Xerces
>     Reporter: Jean-Jacques Thomasson
>     Assignee: Sandy Gao
>  Attachments: DW1.zip, ParseWithXerces.zip, bugXercesStudy.zip, dm.zip, 
> dmodule_descriptSchema_flat.xsd
>
> An example :
> In a schema named "complexTypes.xsd", we define the following inclusions :
>       <xs:include schemaLocation="attributeGroups.xsd"/>
>       <xs:include schemaLocation="simpleElements.xsd"/>
>       <xs:include schemaLocation="complexElements.xsd"/>
>       <xs:include schemaLocation="elementGroups.xsd"/>
> and, in "complexEelements.xsd", we use the following inclusions :
>       <xs:include schemaLocation="complexTypes.xsd"/>
> (Since we need element definitions to define complexTypes and vice-versa).
> Most of the parsers (XSV, XMLSpy) are now supporting this kind of 
> self-mirroring inclusions  which is admitted by the W3C recommendation (Note 
> 2 of section 4.2.1 "Schema Representation Constraint: Inclusion Constraints 
> and Semantics ").
> But Xerces produces (a series of) the following sample message :
> "[Error] complexTypes.xsd:32:54: sch-props-correct.2: A schema cannot contain 
> two global components with the same name; this schema contains two 
> occurrences of ',contentType_fn3dktizrknc9pi'."
> It is an important matter of concern for industries wishinig to have a 
> complex architecture of schemas such as the aeerospace industry.
> Please, could you look at this ?
> Jean-Jacques Thomasson
>  

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to