Author: mrglavas
Date: Fri Nov 18 13:10:32 2005
New Revision: 345572
URL: http://svn.apache.org/viewcvs?rev=345572&view=rev
Log:
Fixing JIRA Issue #682:
http://issues.apache.org/jira/browse/XERCESJ-682
When a selector matches, only key IDCs are required to match all of their
fields.
Unique and keyref IDCs which only match some of their fields are not members of
the
"qualified node set" however this is not an error and we shouldn't be reporting
one.
Modified:
xerces/java/trunk/src/org/apache/xerces/impl/xs/XMLSchemaValidator.java
Modified:
xerces/java/trunk/src/org/apache/xerces/impl/xs/XMLSchemaValidator.java
URL:
http://svn.apache.org/viewcvs/xerces/java/trunk/src/org/apache/xerces/impl/xs/XMLSchemaValidator.java?rev=345572&r1=345571&r2=345572&view=diff
==============================================================================
--- xerces/java/trunk/src/org/apache/xerces/impl/xs/XMLSchemaValidator.java
(original)
+++ xerces/java/trunk/src/org/apache/xerces/impl/xs/XMLSchemaValidator.java Fri
Nov 18 13:10:32 2005
@@ -3405,34 +3405,19 @@
return;
}
- // do we have enough values?
+ // Validation Rule: Identity-constraint Satisfied
+ // 4.2 If the {identity-constraint category} is key, then all of
the following must be true:
+ // 4.2.1 The target node set and the qualified node set are equal,
that is, every member of the
+ // target node set is also a member of the qualified node set and
vice versa.
+ //
+ // If the IDC is a key check whether we have all the fields.
if (fValuesCount != fFieldCount) {
- switch (fIdentityConstraint.getCategory()) {
- case IdentityConstraint.IC_UNIQUE :
- {
- String code = "UniqueNotEnoughValues";
- String ename =
fIdentityConstraint.getElementName();
- reportSchemaError(code, new Object[] { ename });
- break;
- }
- case IdentityConstraint.IC_KEY :
- {
- String code = "KeyNotEnoughValues";
- UniqueOrKey key = (UniqueOrKey)
fIdentityConstraint;
- String ename =
fIdentityConstraint.getElementName();
- String kname = key.getIdentityConstraintName();
- reportSchemaError(code, new Object[] { ename,
kname });
- break;
- }
- case IdentityConstraint.IC_KEYREF :
- {
- String code = "KeyRefNotEnoughValues";
- KeyRef keyref = (KeyRef) fIdentityConstraint;
- String ename =
fIdentityConstraint.getElementName();
- String kname =
(keyref.getKey()).getIdentityConstraintName();
- reportSchemaError(code, new Object[] { ename,
kname });
- break;
- }
+ if (fIdentityConstraint.getCategory() ==
IdentityConstraint.IC_KEY) {
+ String code = "KeyNotEnoughValues";
+ UniqueOrKey key = (UniqueOrKey) fIdentityConstraint;
+ String ename = fIdentityConstraint.getElementName();
+ String kname = key.getIdentityConstraintName();
+ reportSchemaError(code, new Object[] { ename, kname });
}
return;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]