# HG changeset patch
# User wleggette
# Date 1239916644 18000
# Branch clean
# Node ID 0e4176541d02dd5ff38d4559e9a4baad9b6dc73b
# Parent  5471ba2f2541e6cc0dc7808f0f1f86f35297ebdd
[mq]: validate-projection.patch

diff -r 5471ba2f2541 -r 0e4176541d02 
src/typeimpl/org/apache/xmlbeans/impl/validator/Validator.java
--- a/src/typeimpl/org/apache/xmlbeans/impl/validator/Validator.java    Sun Mar 
22 15:07:07 2009 -0500
+++ b/src/typeimpl/org/apache/xmlbeans/impl/validator/Validator.java    Thu Apr 
16 16:17:24 2009 -0500
@@ -81,6 +81,7 @@
         options = XmlOptions.maskNull(options);
         _errorListener = (Collection) options.get(XmlOptions.ERROR_LISTENER);
         _treatLaxAsSkip = 
options.hasOption(XmlOptions.VALIDATE_TREAT_LAX_AS_SKIP);
+        _validationByProjection = 
options.hasOption(XmlOptions.VALIDATE_BY_PROJECTION);
 
         if (_errorListener == null)
             _errorListener = defaultErrorListener;
@@ -296,7 +297,8 @@
 
             if (!state.visit( name ))
             {
-                findDetailedErrorBegin(event ,state , name);
+                if (!_validationByProjection)
+                    findDetailedErrorBegin(event ,state , name);
 
                 _eatContent = 1;
 
@@ -638,6 +640,8 @@
 
         if (!state._canHaveAttrs)
         {
+            if (_validationByProjection)
+                return;
             emitFieldError( event, 
XmlErrorCodes.ELEM_COMPLEX_TYPE_LOCALLY_VALID$NO_WILDCARD,
                 new Object[] {QNameHelper.pretty( attrName )}, attrName, null, 
null,
                 XmlValidationError.INCORRECT_ATTRIBUTE, state._type);
@@ -677,6 +681,9 @@
 
         if (wildcardProcess == SchemaAttributeModel.NONE)
         {
+            if (_validationByProjection)
+                return;
+
             // todo (dutta) need additional logic to determine the 
expectedSchemaType
             emitFieldError( event, 
XmlErrorCodes.ELEM_COMPLEX_TYPE_LOCALLY_VALID$NO_WILDCARD,
                 new Object[] { QNameHelper.pretty( attrName ) },
@@ -1733,6 +1740,7 @@
     private int                _errorState;
     private Collection         _errorListener;
     private boolean            _treatLaxAsSkip;
+    private boolean            _validationByProjection;
     private ValidatorVC        _vc;
     private int                _suspendErrors;
     private IdentityConstraint _constraintEngine;
diff -r 5471ba2f2541 -r 0e4176541d02 
src/xmlpublic/org/apache/xmlbeans/XmlOptions.java
--- a/src/xmlpublic/org/apache/xmlbeans/XmlOptions.java Sun Mar 22 15:07:07 
2009 -0500
+++ b/src/xmlpublic/org/apache/xmlbeans/XmlOptions.java Thu Apr 16 16:17:24 
2009 -0500
@@ -771,6 +771,15 @@
     public XmlOptions setValidateTreatLaxAsSkip() {
         return set ( VALIDATE_TREAT_LAX_AS_SKIP );
     }
+    
+    /**
+     * Instructs the validator to ignore and remove any items not understood
+     * by the schema. This is useful for XML languages that specify a "must
+     * ignore" rule to allow for forward compatibility.
+     */
+    public XmlOptions setValidateByProjection() {
+        return set ( VALIDATE_BY_PROJECTION );
+    }
 
     /**
      * This option controls whether or not operations on XmlBeans are
@@ -946,6 +955,8 @@
     /** @exclude */
     public static final String VALIDATE_TEXT_ONLY              = 
"VALIDATE_TEXT_ONLY";
     /** @exclude */
+    public static final String VALIDATE_BY_PROJECTION          = 
"VALIDATE_BY_PROJECTION";
+    /** @exclude */
     public static final String UNSYNCHRONIZED                  = 
"UNSYNCHRONIZED";
     /** @exclude */
     public static final String ENTITY_RESOLVER                 = 
"ENTITY_RESOLVER";

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@xmlbeans.apache.org
For additional commands, e-mail: dev-h...@xmlbeans.apache.org

Reply via email to