  | |  | Updated: (XERCESJ-1052) XML Schema validation corrupts CDATA sections | Updated: (XERCESJ-1052) XML Schema validation corrupts CDATA sections 2007-04-29 - By Michael Glavassevich (JIRA)
[ 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: j-dev-unsubscribe@(protected) For additional commands, e-mail: j-dev-help@(protected)
|
|
 |