Hello, I use Xerces J 1.0.1 (not the last version, I know, but it shouldn't make differences), and want to create an XML document "on the fly" and to validate it with a DTD. But it doesn't work :-(
If I construct my document by programmation, I can't tell the document that it is finished (and that all requiered elements should be present). Thus, I try to parse the document that I've created to validate it. But it still doesn't work... Can you help me, please ? Thank's a lot, Eric. _______________________ Here is my DTD : _______________________ <?xml version="1.0" encoding="UTF-8"?> <!-- DTD : Territoire PosterScan --> <!ELEMENT territoire-posterscan (name, region+)> <!ELEMENT region (name, district+)> <!ELEMENT district (name, zone+)> <!ELEMENT zone (name, commune+)> <!ELEMENT name (#PCDATA)> <!ELEMENT commune (insee)> <!ELEMENT insee (#PCDATA)> _______________________ Here is what I do : _______________________ org.apache.xerces.dom.DocumentTypeImpl docType = new org.apache.xerces.dom.DocumentTypeImpl( null, "territoire-posterscan", null, "http://localhost/dtd/territoire_posterscan.dtd" ); org.apache.xerces.dom.DocumentImpl doc = new org.apache.xerces.dom.DocumentImpl(docType); org.w3c.dom.Node terposter = doc.createElement("territoire-posterscan"); doc.appendChild(terposter); org.w3c.dom.Node reg = doc.createElement("region"); terposter.appendChild(reg); org.w3c.dom.Node dist = doc.createElement("district"); reg.appendChild(dist); /* If I stop here, validation is Ok, even if the doc isn't conform to the DTD, because I can't tell the doc that I've finished Thus, I try to parse it, to force validation */ StringWriter writer = new StringWriter(); org.apache.xml.serialize.OutputFormat outputFormat = new org.apache.xml.serialize.OutputFormat(doc); outputFormat.setOmitXMLDeclaration(false); outputFormat.setDoctype(null, "http://localhost/dtd/territoire_posterscan.dtd"); org.apache.xml.serialize.XMLSerializer serializer = new org.apache.xml.serialize.XMLSerializer(writer, outputFormat); serializer.serialize(doc); org.apache.xerces.parsers.DOMParser parser = new org.apache.xerces.parsers.DOMParser(); parser.setFeature("http://xml.org/sax/features/validation", true); parser.setFeature("http://apache.org/xml/features/dom/create-entity-ref-node s", false); parser.setFeature("http://apache.org/xml/features/validation/warn-on-duplica te-attdef", true); parser.setFeature("http://apache.org/xml/features/validation/warn-on-undecla red-elemdef", true); parser.setFeature("http://apache.org/xml/features/dom/defer-node-expansion", true); parser.parse(new org.xml.sax.InputSource(new StringReader(writer.toString()))); /* and it's still Ok... */ _______________________________________ Eric SCHAEFFER [EMAIL PROTECTED] POSTER CONSEIL 118 rue de Tocqueville 75017 PARIS FRANCE Tel. : 33-140541058 Fax : 33-140541059 _______________________________________ ---------------------------------------------------------------------------- ----------------------------- Come to the first official Apache Software Foundation Conference! ----------------------------------- http://ApacheCon.Com ------------------------------------