[
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]