import java.io.Reader;
import java.io.StringReader;

import javax.xml.XMLConstants;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamReader;
import javax.xml.transform.Source;
import javax.xml.transform.stax.StAXSource;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.SchemaFactory;
import javax.xml.validation.Validator;

public class Test {

    static public void main(String ... args) {

        try {

            String schema = "<xs:schema\n" +
                            "xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"\n" +
                            "targetNamespace=\"http://xxxx.com/schema/test\"\n" +
                            "attributeFormDefault=\"unqualified\" elementFormDefault=\"qualified\"\n" +
                            ">\n" +
                            "\n" +
                            "<xs:element name=\"test\">\n" +
                            "<xs:complexType>\n" +
                            "<xs:choice>\n" +
                            "<xs:element name=\"tag\" type=\"xs:string\" />\n" +
                            "</xs:choice>\n" +
                            "</xs:complexType>\n" +
                            "</xs:element>\n" +
                            "\n" +
                            "</xs:schema>\n";

            String xml = "<test xmlns=\"http://xxxx.com/schema/test\">\n" +
                         "<tag><![CDATA[]]></tag>\n" +
                         "</test>\n";

            Reader schemaReader = new StringReader(schema);
            Reader xmlReader = new StringReader(xml);

            Source source = new StreamSource(schemaReader);

            Validator validator =
                    SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI).newSchema(source).newValidator();

            XMLStreamReader xmlStreamReader = XMLInputFactory.newInstance().createXMLStreamReader(xmlReader);
            validator.validate(new StAXSource(xmlStreamReader));

        } catch(Exception e) {

            e.printStackTrace();

        }

    }

} 