[ 
https://issues.apache.org/jira/browse/CXF-8979?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Freeman Yue Fang updated CXF-8979:
----------------------------------
    Attachment:     (was: SchemaValidationTest.java)

> XML (Woodstox/MSV) based schema validation is broken
> ----------------------------------------------------
>
>                 Key: CXF-8979
>                 URL: https://issues.apache.org/jira/browse/CXF-8979
>             Project: CXF
>          Issue Type: Bug
>    Affects Versions: 3.6.2, 4.0.3
>            Reporter: Markus Schulz
>            Assignee: Freeman Yue Fang
>            Priority: Major
>         Attachments: SchemaValidationTest.java, reproducer.tgz
>
>
> The current approach to implement the xml schema validation with the Woodstox/
> W3CMultiSchemaFactory is unable to validate many schema and returns 
> false-positive results for them.
>  
> The validator is attached on an  ({{NUllOutputStream}}-) XMLStreamWriter (see 
> org/apache/cxf/databinding/source/XMLStreamDataReader.java:231) but this 
> can't work for abstract elements which needs to be declared explicit thru 
> xsi:type attribute.
>  
> For example the following element:
> {code:xml}
> <AbstractElement xsi:type="test:STE_ReproducerBasis">Valid1</AbstractElement> 
> {code}
> can't be validate thru this approach because at time of the "StartElement" 
> validation  of the AbstractElement tag (see 
> _com.ctc.wstx.msv.GenericMsvValidator#validateElementStart_) the {{xsi:type}} 
> attribute is not known to the current attribute-context and therefore it's 
> not possible to create the right "ChildAcceptor". 
> *It returns with an (false-positive) validation error.*
>  
> *I've attached an reproducer* which shows an example and that the validation 
> fails only because it was attached on an writer. 
> The same xml could be successfully validated if the validator was attached to 
> the reader instance.
>  
> I don't understand the decision why the validator was attached on the writer 
> and not the reader. 
> Perhaps someone could give some more details about this and then i could try 
> to solve this bug by myself (pull-request).
>  
> Another point: it looks like there is no way to choose between MSV and the 
> fallback (schema.newValidator().validate(..)) implementation.
> *This leaves me in a problematic situation, i can't explicit switch to the 
> fallback (which will work).* Perhaps this should be allowed in the fix of 
> this issue too.
>  
> [^reproducer.tgz]



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to