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