[
https://issues.apache.org/jira/browse/XERCESJ-1052?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Michael Glavassevich updated XERCESJ-1052:
------------------------------------------
Component/s: XML Schema Structures
> XML Schema validation corrupts CDATA sections
> ---------------------------------------------
>
> Key: XERCESJ-1052
> URL: https://issues.apache.org/jira/browse/XERCESJ-1052
> Project: Xerces2-J
> Issue Type: Bug
> Components: XML Schema Structures
> Affects Versions: 2.6.2
> Environment: Tested with Sun JDK 1.5.0.02 on x86 Linux.
> Xerces was built using 'jar-dom3' target.
> Reporter: Bas de Bakker
>
> Parsing a document with XML Schema validation messes up CDATA sections. Below
> is a self-contained test case.
> The output of the test is:
> Child 1 = 'foo'
> Child 2 = ' bar'
> Notice that the space has become part of the CDATA section.
> import java.io.StringReader;
> import org.apache.xerces.parsers.DOMParser;
> import org.apache.xerces.parsers.XML11Configuration;
> import org.apache.xerces.xni.XMLResourceIdentifier;
> import org.apache.xerces.xni.parser.XMLEntityResolver;
> import org.apache.xerces.xni.parser.XMLInputSource;
> import org.apache.xerces.xni.parser.XMLParserConfiguration;
> import org.w3c.dom.CDATASection;
> import org.w3c.dom.Document;
> import org.w3c.dom.Element;
> import org.w3c.dom.Text;
> public class XercesTest {
> public static void main(String[] args) {
> try {
> doTest();
> } catch (Exception e) {
> e.printStackTrace();
> }
> }
>
> private static void doTest() throws Exception {
> XMLParserConfiguration config = new XML11Configuration();
> config.setFeature("http://apache.org/xml/features/validation/schema",
> true);
> config.setEntityResolver(new MyEntityResolver());
> DOMParser parser = new DOMParser(config);
> XMLInputSource input = new XMLInputSource(null, null, null);
> String doctext = "<root
> xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' "
> + "xsi:noNamespaceSchemaLocation='root.xsd'>foo
> <![CDATA[bar]]></root>";
> input.setCharacterStream(new StringReader(doctext));
> parser.parse(input);
> Document document = parser.getDocument();
> Element docelem = document.getDocumentElement();
> Text child1 = (Text)docelem.getFirstChild();
> CDATASection child2 = (CDATASection)child1.getNextSibling();
> System.out.println("Child 1 = '" + child1.getNodeValue() + '\'');
> System.out.println("Child 2 = '" + child2.getNodeValue() + '\'');
> }
>
> private static class MyEntityResolver implements XMLEntityResolver {
> public XMLInputSource resolveEntity(XMLResourceIdentifier resource) {
> String doctext = "<xsd:schema
> xmlns:xsd='http://www.w3.org/2001/XMLSchema'>"
> + "<xsd:element name='root'>"
> + "<xsd:simpleType>"
> + "<xsd:list itemType='xsd:string'/>"
> + "</xsd:simpleType>"
> + "</xsd:element>"
> + "</xsd:schema>";
> XMLInputSource input = new XMLInputSource(resource);
> input.setCharacterStream(new StringReader(doctext));
> return input;
> }
> }
> }
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]