[
https://issues.apache.org/jira/browse/CXF-8979?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Freeman Yue Fang updated CXF-8979:
----------------------------------
Attachment: 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)