Hi

I am facing exactly the issue reported by this oxygen user :
http://www.oxygenxml.com/forum/topic2869.html?sid=a4b044cdcc3c06ae07059f924156f6d3
When using several keyrefs causing errors, Xerces reports only the first and
then gives up.

I would really like to have Xerces report all foreign key errors, like I've
seen with the saxon or libXml parsers. Is there a way to do that ?

I've done a few hours of search and I've read that it is a fatal error to
Xerces and that's why it stops. I've tried to set continue-after-fatal-error
to true but it didn't change anything ; anyway I've read that it's not
recommended to set this option in a production environment.

I'm joining a sample XML and XSD files that show my problem. In my example,
each ASSREGARD references a ASSFILDO, I've created two bad ASSREGARD that
reference non-existent ASSFILDO. Then Xerces reports only :
     Description: [Xerces] cvc-identity-constraint.4.3: Key
'FK_ASSFILDOREGARD' with value 'non-existent1' not found for identity
constraint of element 'FeatureCollection'.
     URL: http://www.w3.org/TR/xmlschema-1/#cvc-identity-constraint

Instead of this I would like it to report both errors, on non-existent1 and
non-existent2. Thank you very much for any support !

Regards, Guillaume

Here are the two files :

----> keyrefDemo.xml

<?xml version="1.0" encoding="UTF-8"?>

<glml:FeatureCollection
    xmlns:gml="http://www.opengis.net/gml";
    xmlns:glml="http://www.grandlyon.com/glml";
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
    xsi:schemaLocation="http://www.grandlyon.com/glml ./keyrefDemo.xsd"  >

    <glml:ASSFILDO>
        <glml:IID_IDENTFILDO>28532</glml:IID_IDENTFILDO>
    </glml:ASSFILDO>

    <glml:ASSREGARD>
        <glml:IID_IDENTREGARD>23797</glml:IID_IDENTREGARD>
        <glml:IID_ASSFILDO>28532</glml:IID_ASSFILDO>
    </glml:ASSREGARD>

    <glml:ASSREGARD>
        <glml:IID_IDENTREGARD>bad1</glml:IID_IDENTREGARD>
        <glml:IID_ASSFILDO>non-existent1</glml:IID_ASSFILDO>
    </glml:ASSREGARD>

    <glml:ASSREGARD>
        <glml:IID_IDENTREGARD>bad2</glml:IID_IDENTREGARD>
        <glml:IID_ASSFILDO>non-existent2</glml:IID_ASSFILDO>
    </glml:ASSREGARD>

</glml:FeatureCollection>


-----> keyrefDemo.xsd

<?xml version="1.0" encoding="UTF-8" ?>
<schema targetNamespace="http://www.grandlyon.com/glml"; xmlns:glml="
http://www.grandlyon.com/glml";
    xmlns:xlink="http://www.w3.org/1999/xlink";
    xmlns="http://www.w3.org/2001/XMLSchema"; elementFormDefault="qualified"
version="0.9">

    <!-- element -->
    <element name="FeatureCollection">
        <complexType>
            <sequence>

                <element name="ASSFILDO" maxOccurs="unbounded" >
                    <complexType>
                        <sequence>
                            <element name="IID_IDENTFILDO" type="string" />
                        </sequence>
                    </complexType>
                </element>

                <element name="ASSREGARD" maxOccurs="unbounded" >
                    <complexType>
                        <sequence>
                            <element name="IID_IDENTREGARD" type="string" />
                            <element name="IID_ASSFILDO" type="string" />
                        </sequence>
                    </complexType>
                </element>

            </sequence>
        </complexType>

        <key name="PK_ASSFILDO">
            <selector xpath="glml:ASSFILDO"/>
            <field xpath="glml:IID_IDENTFILDO"/>
        </key>

        <key name="PK_ASSREGARD">
            <selector xpath="glml:ASSREGARD"/>
            <field xpath="glml:IID_IDENTREGARD"/>
        </key>

        <keyref name="FK_ASSFILDOREGARD" refer="glml:PK_ASSFILDO">
            <selector xpath="glml:ASSREGARD"/>
            <field xpath="glml:IID_ASSFILDO"/>
        </keyref>

    </element>

</schema>

Reply via email to