[ 
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]

Reply via email to