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>