You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by mr...@apache.org on 2005/07/25 00:55:21 UTC
cvs commit: xml-xerces/java/src/org/apache/xerces/impl/xs XMLSchemaValidator.java
mrglavas 2005/07/24 15:55:21
Modified: java/src/org/apache/xerces/impl/xs XMLSchemaValidator.java
Log:
Fixing JIRA Issue #1090:
http://issues.apache.org/jira/browse/XERCESJ-1090
Clause 2.1 of Section 3.4.4 of Part 1: Structures says: "If the {content type} is empty,
then the element information item has no character or element information item [children]".
Section 3.1.4 says: "... comments and processing instructions, even in the
midst of text, are ignored for all �validation� purposes".
The schema validator was reporting an error if a comment or processing instruction was
present as a child of an element declared to have empty content. This behaviour
was introduced in CVS v1.28 when it was thought that errors should be reported for
such content.
Revision Changes Path
1.179 +5 -24 xml-xerces/java/src/org/apache/xerces/impl/xs/XMLSchemaValidator.java
Index: XMLSchemaValidator.java
===================================================================
RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/xs/XMLSchemaValidator.java,v
retrieving revision 1.178
retrieving revision 1.179
diff -u -r1.178 -r1.179
--- XMLSchemaValidator.java 23 Jun 2005 17:58:52 -0000 1.178
+++ XMLSchemaValidator.java 24 Jul 2005 22:55:21 -0000 1.179
@@ -977,10 +977,7 @@
* @throws XNIException Thrown by application to signal an error.
*/
public void comment(XMLString text, Augmentations augs) throws XNIException {
-
- // record the fact that there is a comment child.
- fSawChildren = true;
-
+
// call handlers
if (fDocumentHandler != null) {
fDocumentHandler.comment(text, augs);
@@ -1008,9 +1005,6 @@
public void processingInstruction(String target, XMLString data, Augmentations augs)
throws XNIException {
- // record the fact that there is a PI child.
- fSawChildren = true;
-
// call handlers
if (fDocumentHandler != null) {
fDocumentHandler.processingInstruction(target, data, augs);
@@ -1170,12 +1164,6 @@
/** Stack to record if we saw character data outside of element content*/
private boolean[] fStringContent = new boolean[INITIAL_STACK_SIZE];
- /** Did we see children that are neither characters nor elements? */
- private boolean fSawChildren = false;
-
- /** Stack to record if we other children that character or elements */
- private boolean[] fSawChildrenStack = new boolean[INITIAL_STACK_SIZE];
-
/** temporary qname */
private final QName fTempQName = new QName();
@@ -1534,10 +1522,6 @@
fStringContent = newArrayB;
newArrayB = new boolean[newSize];
- System.arraycopy(fSawChildrenStack, 0, newArrayB, 0, fElementDepth);
- fSawChildrenStack = newArrayB;
-
- newArrayB = new boolean[newSize];
System.arraycopy(fStrictAssessStack, 0, newArrayB, 0, fElementDepth);
fStrictAssessStack = newArrayB;
@@ -1813,7 +1797,6 @@
fCMStateStack[fElementDepth] = fCurrCMState;
fSawTextStack[fElementDepth] = fSawText;
fStringContent[fElementDepth] = fSawCharacters;
- fSawChildrenStack[fElementDepth] = fSawChildren;
}
// increase the element depth after we've saved
@@ -1830,7 +1813,6 @@
fBuffer.setLength(0);
fSawText = false;
fSawCharacters = false;
- fSawChildren = false;
// check what kind of declaration the "decl" from
// oneTransition() maps to
@@ -2112,8 +2094,8 @@
fCurrCMState = fCMStateStack[fElementDepth];
fSawText = fSawTextStack[fElementDepth];
fSawCharacters = fStringContent[fElementDepth];
- fSawChildren = fSawChildrenStack[fElementDepth];
- } else {
+ }
+ else {
fElementDepth--;
}
@@ -2240,7 +2222,6 @@
fCurrCMState = fCMStateStack[fElementDepth];
fSawText = fSawTextStack[fElementDepth];
fSawCharacters = fStringContent[fElementDepth];
- fSawChildren = fSawChildrenStack[fElementDepth];
// We should have a stack for whitespace value, and pop it up here.
// But when fWhiteSpace != -1, and we see a sub-element, it must be
@@ -3109,7 +3090,7 @@
if (!fNil) {
// 2.1 If the {content type} is empty, then the element information item has no character or element information item [children].
if (ctype.fContentType == XSComplexTypeDecl.CONTENTTYPE_EMPTY
- && (fSubElement || fSawText || fSawChildren)) {
+ && (fSubElement || fSawText)) {
reportSchemaError("cvc-complex-type.2.1", new Object[] { element.rawname });
}
// 2.2 If the {content type} is a simple type definition, then the element information item has no element information item [children], and the normalized value of the element information item is valid with respect to that simple type definition as defined by String Valid (3.14.4).
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@xerces.apache.org
For additional commands, e-mail: commits-help@xerces.apache.org