You are viewing a plain text version of this content. The canonical link for it is here.
Posted to j-dev@xerces.apache.org by "Michael Glavassevich (JIRA)" <xe...@xml.apache.org> on 2009/07/28 21:56:15 UTC
[jira] Updated: (XERCESJ-1387) Validation of elements does not add
a PSVI data
[ https://issues.apache.org/jira/browse/XERCESJ-1387?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Michael Glavassevich updated XERCESJ-1387:
------------------------------------------
Component/s: JAXP (javax.xml.validation)
> Validation of elements does not add a PSVI data
> -----------------------------------------------
>
> Key: XERCESJ-1387
> URL: https://issues.apache.org/jira/browse/XERCESJ-1387
> Project: Xerces2-J
> Issue Type: Bug
> Components: JAXP (javax.xml.validation), XML Schema API
> Affects Versions: 2.9.1
> Environment: Java 1.6.0_10 Windows Vista Business
> Reporter: Stefan Chodnik
> Assignee: Michael Glavassevich
>
> Test code:
> import java.io.File;
> import java.io.IOException;
> import javax.xml.transform.dom.DOMResult;
> import javax.xml.transform.dom.DOMSource;
> import javax.xml.validation.Schema;
> import javax.xml.validation.SchemaFactory;
> import javax.xml.validation.Validator;
> import org.apache.xerces.xs.ElementPSVI;
> import org.apache.xerces.xs.XSElementDeclaration;
> import org.w3c.dom.DOMImplementation;
> import org.w3c.dom.Document;
> import org.w3c.dom.Element;
> import org.w3c.dom.bootstrap.DOMImplementationRegistry;
> import org.xml.sax.ErrorHandler;
> import org.xml.sax.SAXException;
> import org.xml.sax.SAXParseException;
> class ValidationTest {
> public static final String namespace = "http://www.example.org/schema/";
> private Schema schema;
> private Document document;
> private Validator validator;
> private Element item;
> private Element foo;
> public static void main(String[] args) {
> System.out.println("ValidationTest start");
> ValidationTest testClass = new ValidationTest();
> testClass.doTest();
> }
> private void doTest() {
> createSchema();
> buildDocument();
> try {
> validator.validate(new DOMSource(document), new DOMResult(document));
> } catch (SAXException e) {
> e.printStackTrace();
> } catch (IOException e) {
> e.printStackTrace();
> }
> addItemNode();
> addFooNode();
>
> }
>
> private void addFooNode() {
> foo = document.createElementNS(namespace, "foo");
> item.appendChild(foo);
> ElementPSVI elementPSVI;
> try {
> validator.validate(new DOMSource(foo), new DOMResult(foo));
> } catch (SAXException e) {
> e.printStackTrace();
> } catch (IOException e) {
> e.printStackTrace();
> }
> elementPSVI=(ElementPSVI) foo;
> XSElementDeclaration declaration = elementPSVI.getElementDeclaration();
> if(declaration==null){
> System.out.println("declaration==null //3");
> }
>
>
> try {
> validator.validate(new DOMSource(item), new DOMResult(item));
> } catch (SAXException e) {
> e.printStackTrace();
> } catch (IOException e) {
> e.printStackTrace();
> }
> elementPSVI=(ElementPSVI) foo;
> declaration = elementPSVI.getElementDeclaration();
> if(declaration==null){
> System.out.println("declaration==null //4");
> }
>
> try {
> validator.validate(new DOMSource(document.getDocumentElement()), new DOMResult(document.getDocumentElement()));
> } catch (SAXException e) {
> e.printStackTrace();
> } catch (IOException e) {
> e.printStackTrace();
> }
> elementPSVI=(ElementPSVI) foo;
> declaration = elementPSVI.getElementDeclaration();
> if(declaration==null){
> System.out.println("declaration==null //5");
> }
>
> }
> private void addItemNode() {
> item = document.createElementNS(namespace, "item");
> document.getDocumentElement().appendChild(item);
> ElementPSVI elementPSVI;
> try {
> validator.validate(new DOMSource(item), new DOMResult(item));
> } catch (SAXException e) {
> e.printStackTrace();
> } catch (IOException e) {
> e.printStackTrace();
> }
> elementPSVI=(ElementPSVI) item;
> XSElementDeclaration declaration = elementPSVI.getElementDeclaration();
> if(declaration==null){
> System.out.println("declaration==null //1");
> }
>
> try {
> validator.validate(new DOMSource(document.getDocumentElement()), new DOMResult(document.getDocumentElement()));
> } catch (SAXException e) {
> e.printStackTrace();
> } catch (IOException e) {
> e.printStackTrace();
> }
> elementPSVI=(ElementPSVI) item;
> declaration = elementPSVI.getElementDeclaration();
> if(declaration==null){
> System.out.println("declaration==null //2");
> }
>
> }
> private void createSchema() {
> SchemaFactory factory = SchemaFactory
> .newInstance("http://www.w3.org/2001/XMLSchema");
> try {
> schema = factory.newSchema(new File("schema.xsd"));
> validator = schema.newValidator();
> validator.setErrorHandler(new ErrorHandler() {
> @Override
> public void error(SAXParseException exception) throws SAXException {
> }
> @Override
> public void fatalError(SAXParseException exception)
> throws SAXException {
> }
> @Override
> public void warning(SAXParseException exception)
> throws SAXException {
> }
> });
> } catch (SAXException e) {
> e.printStackTrace();
> }
> }
> private void buildDocument() {
> System.setProperty(DOMImplementationRegistry.PROPERTY,
> "org.apache.xerces.dom.DOMXSImplementationSourceImpl");
> DOMImplementationRegistry registry;
> try {
> registry = DOMImplementationRegistry.newInstance();
> DOMImplementation impl = (DOMImplementation) registry
> .getDOMImplementation("psvi 1.0");
> document = impl.createDocument(namespace, "root", null);
> } catch (ClassCastException e) {
> e.printStackTrace();
> } catch (ClassNotFoundException e) {
> e.printStackTrace();
> } catch (InstantiationException e) {
> e.printStackTrace();
> } catch (IllegalAccessException e) {
> e.printStackTrace();
> }
> }
> }
> Loaded schema ,file schema.xsd :
> <?xml version="1.0" encoding="UTF-8"?>
> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns="http://www.example.org/schema/"
> targetNamespace="http://www.example.org/schema/">
> <xs:element name="root">
> <xs:complexType>
> <xs:sequence>
> <xs:element name="item">
> <xs:complexType>
> <xs:sequence>
> <xs:element name="foo" type="xs:string"></xs:element>
> <xs:element name="bar" type="xs:string"></xs:element>
> </xs:sequence>
> </xs:complexType>
> </xs:element>
> </xs:sequence>
> </xs:complexType>
> </xs:element>
> </xs:schema>
> Compile and run commands:
> javac -cp .;./xercesImpl.jar ValidationTest.java
> java -cp .;./xercesImpl.jar ValidationTest
> Result:
> ValidationTest start
> declaration==null //1
> declaration==null //3
> declaration==null //4
> When the element is other than document element there is no information about this element declaration. Using document or documentElement to construct DOMSource and DOMResult makes it works fine.
--
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@xerces.apache.org
For additional commands, e-mail: j-dev-help@xerces.apache.org