/****************************************
 * application : dPrint_DPS
 * class name  : Validator1.java
 * describing  :
 * copyright   : Neusoft
 * company     : Neusoft
 * create time : 2006/09/01
 *
 * @author   Zhangzhongl
 * @version  0.8
 ****************************************/
import java.io.File;
import org.iso_relax.verifier.Schema;
import org.iso_relax.verifier.Verifier;
import org.iso_relax.verifier.VerifierFactory;
import org.iso_relax.verifier.VerifierHandler;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.io.SAXReader;
import org.dom4j.io.SAXWriter;
import org.xml.sax.ErrorHandler;
import org.xml.sax.SAXParseException;
 
public class Validator1 {
 
    private String schemaURI;
    private Document document;
 
    public Validator1(Document document, String schemaURI) {
        this.schemaURI = schemaURI;
        this.document = document;
    }
 
    public boolean validate() throws Exception {
        System.out.println("1");
        // (1) use autodetection of schemas
        VerifierFactory factory = new com.sun.msv.verifier.jarv.TheFactoryImpl();
        System.out.println("2");
        Schema schema = factory.compileSchema(schemaURI);
        System.out.println("3");
        // (2) configure a Vertifier
        Verifier verifier = schema.newVerifier();
        System.out.println("4");
        verifier.setErrorHandler(new ErrorHandler() {
            public void error(SAXParseException saxParseEx) {
                System.out.println("5");
                saxParseEx.printStackTrace();
            }
 
            public void fatalError(SAXParseException saxParseEx) {
                System.out.println("6");
                saxParseEx.printStackTrace();
            }
 
            public void warning(SAXParseException saxParseEx) {
                System.out.println("7");
                saxParseEx.printStackTrace();
            }
        });
        // (3) starting validation by resolving the dom4j document into sax
        VerifierHandler handler = verifier.getVerifierHandler();
        System.out.println("8");
        SAXWriter writer = new SAXWriter(handler);
        System.out.println("9");
        writer.write(document);//////////////////////////////////////////////////////////////
        System.out.println("10");
        return handler.isValid();
    }
    public static void main(String []args) throws DocumentException{
        SAXReader reader=new SAXReader();
        Document document=reader.read(new File("printapp-config2.xml"));
        Validator1 val=new Validator1(document,"printapp-config.xsd");
        try {
            System.out.println(val.validate());
        } catch (Exception e) {
            System.out.println("0");
            e.printStackTrace();
        }
    }
}
 
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="unqualified">
<xsd:element name="printapp-config">
    <xsd:complexType>
 <xsd:sequence>
     <xsd:element ref="print-target-list" minOccurs="1" maxOccurs="1" />
 </xsd:sequence>
    </xsd:complexType>
</xsd:element>
 
<xsd:element name="printapp-version" type="versionEnum" />
 
<xsd:element name="print-target-list">
    <xsd:complexType>
 <xsd:sequence>
     <xsd:element ref="target" minOccurs="2" maxOccurs="2" />
 </xsd:sequence>
    </xsd:complexType>
</xsd:element>
<xsd:element name="target">
    <xsd:complexType>
        <xsd:attribute name="type" type="typeEnum" use="required" />
        <xsd:attribute name="available" type="availableEnum" use="required" />
    </xsd:complexType>
</xsd:element>
<xsd:simpleType name="typeEnum">
    <xsd:restriction base="xsd:string">
        <xsd:enumeration value="printer" />
        <xsd:enumeration value="setting" />
    </xsd:restriction>
</xsd:simpleType>
 
<xsd:simpleType name="availableEnum">
    <xsd:restriction base="xsd:string">
        <xsd:pattern value="true|false" />
    </xsd:restriction>
</xsd:simpleType>
</xsd:schema>
 
 
 
<?xml version="1.0" ?>
<printapp-config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="printapp-config.xsd">
 <printapp-version>2.2.0</printapp-version>
 <print-target-list>
  <target type="setting" available="true" /> 
  <target type="printer" available="true" />
 </print-target-list>
</printapp-config>


Confidentiality Notice: The information contained in this e-mail and any accompanying attachment(s) is intended only for the use of the intended recipient and may be confidential and/or privileged of Neusoft Group Ltd., its subsidiaries and/or its affiliates. If any reader of this communication is not the intended recipient, unauthorized use, forwarding, printing, storing, disclosure or copying is strictly prohibited, and may be unlawful. If you have received this communication in error, please immediately notify the sender by return e-mail, and delete the original message and all copies from your system. Thank you.
-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
dom4j-dev mailing list
dom4j-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dom4j-dev

Reply via email to