Hello xml freaks,

I think it is an often asked question, but i can't find
a working example in the archive.
ok, here we go...

I have a xml file and a xml-schema file looking like this:
xml:
<?xml version="1.0" encoding="UTF-8"?>
<db xmlns="http://www.test.de/db";
xsi:schemaLocation="http://www.test.de/db ./dba_default_mapping.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema"; >
  <dataset id="123">
        <generaldata>
                <kunde>
                        <vname>Karl</vname>
                        <lname>Test</lname>
                </kunde>
                <vnr>9998</vnr>
                <vorgang_dc>vorgangdc</vorgang_dc>
                <eingabedatum>13.1.1974</eingabedatum>
        </generaldata>
        <workerdata>3e6herth
                <datum>13.10.2003</datum>
                <bearbeiter>Martin</bearbeiter>
                <ort>Filderstadt</ort>
        </workerdata>
  </dataset>
</db>

schema:
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema targetNamespace="http://www.test.de/db";
xmlns="http://www.test.de/db";
xmlns:xsd="http://www.w3.org/2001/XMLSchema";>
  
  <xsd:element name="db">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element ref="dataset"  minOccurs="0" maxOccurs="unbounded"
/>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
  
  <xsd:element name="dataset">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element ref="generaldata"  minOccurs="1" maxOccurs="1"/>
        <xsd:element ref="workerdata"  minOccurs="1" maxOccurs="1"/>
      </xsd:sequence>
      <xsd:attribute name="id"     type="xsd:string"
use="required"/>
    </xsd:complexType>
  </xsd:element>
  
  <xsd:element name="generaldata">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element ref="kunde"  minOccurs="1" maxOccurs="1"/>
        <xsd:element name="vnr" type="xsd:string" minOccurs="1"
maxOccurs="1"/>
        <xsd:element name="vorgang_dc" type="xsd:string" minOccurs="1"
maxOccurs="1"/>
        <xsd:element name="eingabedatum" type="xsd:date" minOccurs="1"
maxOccurs="1"/>
      </xsd:sequence>
      <xsd:attribute name="id"     type="xsd:string"
use="required"/>
    </xsd:complexType>
  </xsd:element>
  
  <xsd:element name="workerdata">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="datum" type="xsd:date" minOccurs="1"
maxOccurs="1"/>
        <xsd:element name="bearbeiter" type="xsd:string" minOccurs="1"
maxOccurs="1"/>
        <xsd:element name="ort" type="xsd:string" minOccurs="1"
maxOccurs="1"/>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
  
  <xsd:element name="kunde">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="vname" type="xsd:string" minOccurs="1"
maxOccurs="1"/>
        <xsd:element name="lname" type="xsd:string" minOccurs="1"
maxOccurs="1"/>
        
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>  


I tried to parse and validate the xml file in my test programm, but it
never worked.
The parser always ignored the schema if the xml file is valid or not.

java:
<snip>
DOMParser parser = new DOMParser();
                parser.setErrorHandler(new ErrorHandler() {
                public void warning(SAXParseException e) throws
SAXException {
                        System.err.println("[warning] "+e.getMessage());
                }
                public void error(SAXParseException e) throws
SAXException {
                        System.err.println("[error] "+e.getMessage());
                }
                public void fatalError(SAXParseException e) throws
SAXException {
                        System.err.println("[fatal error]
"+e.getMessage());
                        throw e;
                }
        });
                String id    =
"http://apache.org/xml/properties/schema/external-schemaLocation";;
                Object value = "http://www.test.de/db
./dba_default_mapping.xsd";
                try {
                        parser.setProperty(id, value);
        
id="http://apache.org/xml/properties/schema/external-noNamespaceSchemaLo
cation";
                        value="http://www.test.de/db
./dba_default_mapping.xsd";
                        parser.setProperty(id,value);
                                
                } 
                catch (SAXException e) {
                        System.err.println("could not set parser
property");
                }
                                
      InputSource in = new InputSource(new FileInputStream(filename));
      //DocumentBuilderFactory dfactory =
DocumentBuilderFactory.newInstance();
      //dfactory.setNamespaceAware(true);
      //Document doc = dfactory.newDocumentBuilder().parse(in);
          parser.parse(in);
          Document doc = parser.getDocument();
</snip>

My Question are:
How can I get the parser to use the provieded schema for validation
while parsing?
Is it possible to continuous validate a document while manipulating it,
or do i have to
implement this on my own?

An short working java example would be great! 

greetings
Martin Gr�neberg



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to