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