Author: amassari
Date: Wed Jul 29 15:06:26 2009
New Revision: 798938

URL: http://svn.apache.org/viewvc?rev=798938&view=rev
Log:
If an imported schema had a keyref definition, all the others keyref definition 
ended up in that schema, and would not be enforced (XERCESC-1583)

Added:
    xerces/c/trunk/tests/src/XSTSHarness/regression/XERCESC-1583/
    
xerces/c/trunk/tests/src/XSTSHarness/regression/XERCESC-1583/keyref-imported.xsd
    xerces/c/trunk/tests/src/XSTSHarness/regression/XERCESC-1583/keyref-main.xsd
    xerces/c/trunk/tests/src/XSTSHarness/regression/XERCESC-1583/keyref.xml
Modified:
    xerces/c/trunk/src/xercesc/validators/schema/TraverseSchema.cpp
    xerces/c/trunk/tests/src/XSTSHarness/regression/Xerces.testSet

Modified: xerces/c/trunk/src/xercesc/validators/schema/TraverseSchema.cpp
URL: 
http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/validators/schema/TraverseSchema.cpp?rev=798938&r1=798937&r2=798938&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/validators/schema/TraverseSchema.cpp (original)
+++ xerces/c/trunk/src/xercesc/validators/schema/TraverseSchema.cpp Wed Jul 29 
15:06:26 2009
@@ -8840,9 +8840,7 @@
             fIC_NodeListNS = new (fMemoryManager) 
RefHashTableOf<ValueVectorOf<DOMElement*>, PtrHasher>(29, true, fMemoryManager);
         }
 
-        if (fIC_ElementsNS->containsKey(fTargetNSURIString))
-            fIC_Elements = fIC_ElementsNS->get(fTargetNSURIString);
-
+        fIC_Elements = fIC_ElementsNS->get(fTargetNSURIString);
         if (!fIC_Elements) {
             fIC_Elements = new (fMemoryManager) 
ValueVectorOf<SchemaElementDecl*>(8, fMemoryManager);
             fIC_ElementsNS->put((void*) fTargetNSURIString, fIC_Elements);

Added: 
xerces/c/trunk/tests/src/XSTSHarness/regression/XERCESC-1583/keyref-imported.xsd
URL: 
http://svn.apache.org/viewvc/xerces/c/trunk/tests/src/XSTSHarness/regression/XERCESC-1583/keyref-imported.xsd?rev=798938&view=auto
==============================================================================
--- 
xerces/c/trunk/tests/src/XSTSHarness/regression/XERCESC-1583/keyref-imported.xsd
 (added)
+++ 
xerces/c/trunk/tests/src/XSTSHarness/regression/XERCESC-1583/keyref-imported.xsd
 Wed Jul 29 15:06:26 2009
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"; 
targetNamespace="urn:imported" xmlns="urn:imported">
+    <xsd:element name="items">
+        <xsd:complexType>
+            <xsd:sequence minOccurs="1" maxOccurs="unbounded">
+                <xsd:element name="item">
+                    <xsd:complexType>
+                        <xsd:attribute name="index" type="xsd:integer"/>
+                        <xsd:attribute name="parent" type="xsd:integer"/>
+                    </xsd:complexType>
+                </xsd:element>
+            </xsd:sequence>
+            <xsd:attribute name="id" type="xsd:integer"/>
+        </xsd:complexType>
+        <xsd:key name="index">
+            <xsd:selector xpath="item"/>
+            <xsd:field xpath="@index"/>
+        </xsd:key>
+        <xsd:keyref name="keyRef" refer="index">
+            <xsd:selector xpath="item"/>
+            <xsd:field xpath="@parent"/>
+        </xsd:keyref>
+    </xsd:element>
+</xsd:schema>
\ No newline at end of file

Added: 
xerces/c/trunk/tests/src/XSTSHarness/regression/XERCESC-1583/keyref-main.xsd
URL: 
http://svn.apache.org/viewvc/xerces/c/trunk/tests/src/XSTSHarness/regression/XERCESC-1583/keyref-main.xsd?rev=798938&view=auto
==============================================================================
--- 
xerces/c/trunk/tests/src/XSTSHarness/regression/XERCESC-1583/keyref-main.xsd 
(added)
+++ 
xerces/c/trunk/tests/src/XSTSHarness/regression/XERCESC-1583/keyref-main.xsd 
Wed Jul 29 15:06:26 2009
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"; 
targetNamespace="urn:main" xmlns="urn:main" xmlns:auto1="urn:imported">
+    <xsd:import schemaLocation="keyref-imported.xsd" namespace="urn:imported"/>
+    <xsd:element name="root">
+        <xsd:complexType>
+            <xsd:sequence maxOccurs="unbounded">
+                <xsd:element ref="auto1:items"/>
+            </xsd:sequence>
+            <xsd:attribute name="main" type="xsd:integer"/>
+        </xsd:complexType>
+        <xsd:unique name="noDuplicate">
+            <xsd:selector xpath="auto1:items"/>
+            <xsd:field xpath="@id"/>
+        </xsd:unique>
+        <xsd:keyref name="parent" refer="auto1:index">
+            <xsd:selector xpath="."/>
+            <xsd:field xpath="@main"/>
+        </xsd:keyref>
+    </xsd:element>
+</xsd:schema>
\ No newline at end of file

Added: xerces/c/trunk/tests/src/XSTSHarness/regression/XERCESC-1583/keyref.xml
URL: 
http://svn.apache.org/viewvc/xerces/c/trunk/tests/src/XSTSHarness/regression/XERCESC-1583/keyref.xml?rev=798938&view=auto
==============================================================================
--- xerces/c/trunk/tests/src/XSTSHarness/regression/XERCESC-1583/keyref.xml 
(added)
+++ xerces/c/trunk/tests/src/XSTSHarness/regression/XERCESC-1583/keyref.xml Wed 
Jul 29 15:06:26 2009
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<p1:root main="10" xmlns:p2="urn:imported" xmlns:p1="urn:main" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="urn:main keyref-main.xsd">
+    <p2:items id="1">
+        <item index="1"/>
+        <item index="2" parent="1"/>
+        <item index="3" parent="1"/>
+        <item index="4" parent="2"/>
+    </p2:items>
+    <p2:items id="2">
+        <item index="1"/>
+        <item index="2" parent="1"/>
+        <item index="3" parent="1"/>
+        <item index="4" parent="2"/>
+    </p2:items>
+</p1:root>

Modified: xerces/c/trunk/tests/src/XSTSHarness/regression/Xerces.testSet
URL: 
http://svn.apache.org/viewvc/xerces/c/trunk/tests/src/XSTSHarness/regression/Xerces.testSet?rev=798938&r1=798937&r2=798938&view=diff
==============================================================================
--- xerces/c/trunk/tests/src/XSTSHarness/regression/Xerces.testSet (original)
+++ xerces/c/trunk/tests/src/XSTSHarness/regression/Xerces.testSet Wed Jul 29 
15:06:26 2009
@@ -342,6 +342,22 @@
                        <current status="accepted" date="2008-02-13"/>
                </instanceTest>
        </testGroup>
+       <testGroup name="XERCESC-1583">
+               <annotation>
+                       <documentation>keyref are not processing with imported 
schema</documentation>
+               </annotation>
+               <documentationReference 
xlink:href="https://issues.apache.org/jira/browse/XERCESC-1583"/>
+               <schemaTest name="XERCESC-1583">
+                       <schemaDocument 
xlink:href="./XERCESC-1583/keyref-main.xsd"/>
+                       <expected validity="valid"/>
+                       <current status="accepted" date="2009-07-29"/>
+               </schemaTest>
+               <instanceTest name="XERCESC-1583-1">
+                       <instanceDocument 
xlink:href="./XERCESC-1583/keyref.xml"/>
+                       <expected validity="invalid"/>
+                       <current status="accepted" date="2009-07-29"/>
+               </instanceTest>
+       </testGroup>
        <testGroup name="XERCESC-1591">
                <annotation>
                        <documentation>Mishandling of recursive definition on 
complex content restriction</documentation>



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to