Re: Bug in DOMDocument schemaValidate() function?

From: Date: Mon, 14 May 2012 14:43:31 +0000
Subject: Re: Bug in DOMDocument schemaValidate() function?
References: 1  Groups: php.general 
Request: Send a blank email to php-general+get-317876@lists.php.net to get a copy of this message
On Mon, May 14, 2012 at 1:39 PM, Voß, Marko <Marko.Voss@fiz-karlsruhe.de> wrote: > Hello, > > I am validating user DOM against schema files using the following piece of code: > > $valid = @$doc->schemaValidate($xsdFile); > > where $doc is of type DOMDocument and $xsdFile is the file location of the XSD file. > > Everything worked fine until the following validation occured: > > A validation of a XML against the SRW/U schema > (http://www.loc.gov/standards/sru/sru1-1archive/xml-files/srw-types.xsd) > failed. > > Here is the XML: > > ----------------------------------------------------- > <?xml version="1.0" encoding="UTF-8"?> > <srw:explainResponse > xmlns:srw="http://www.loc.gov/zing/srw/" > xmlns:zr="http://explain.z3950.org/dtd/2.0/"> >   <srw:version>1.1</srw:version> >   <srw:record> >     > <srw:recordSchema>http://explain.z3950.org/dtd/2.0/</srw:recordSchema> >     <srw:recordPacking>XML</srw:recordPacking> >     <srw:recordData> >       <zr:explain> >         <zr:serverInfo > wsdl="http://myserver.com/db" protocol="SRU" > version="1.1"> >           <host>myserver.com</host> >           <port>80</port> >           <database>sru</database> >         </zr:serverInfo> >         <zr:databaseInfo> >           <title lang="en" primary="true">SRU Test > Database</title> >           <description lang="en" primary="true"> My server SRU > Test Database</description> >         </zr:databaseInfo> >         <zr:metaInfo> >           <dateModified>27-11-2003</dateModified> >         </zr:metaInfo> >       </zr:explain> >     </srw:recordData> >   </srw:record> > </srw:explainResponse> > ----------------------------------------------------- > > This XML is valid. However, I keep getting the following libxml error: > > object(LibXMLError)#192 (6) { >     ["level"]=> >     int(2) >     ["code"]=> >     int(1871) >     ["column"]=> >     int(0) >     ["message"]=> >     string(133) "Element > '{http://www.loc.gov/zing/srw/}record': This element is > not expected. Expected is ( > {http://www.loc.gov/zing/srw/}version ). > " >     ["file"]=> >     string(0) "" >     ["line"]=> >     int(0) > } > > I think, the validator is unable to handle the xsd:extension part of the schema: > > <xsd:complexType name="explainResponseType"> >   <xsd:complexContent> >     <xsd:extension base="responseType"> >       <xsd:sequence><xsd:element ref="record"/> >         <xsd:element ref="echoedExplainRequest" minOccurs="0"/> >         <xsd:element ref="diagnostics" minOccurs="0"/> >         <xsd:element ref="extraResponseData" minOccurs="0"/> >       </xsd:sequence> >     </xsd:extension> >   </xsd:complexContent> > </xsd:complexType> > > The version-element exists and is at the right place. If I add another version-element after > the first one, it complains > about expecting a record-element instead, which is correct. But it is not correct to expect > another version-element > after the already existing one. > > Is this a bug? Or did I made a mistake somewhere and I am not able to see it right now? > > > Thank you for any help! > > Best regards, > Marko > If you're 100% sure this XML is valid, then this is a bug. You should report it at bugs.php.net, but it is most likely this bug is in libXML, and needs to be fixed there. - Matijn

« previous php.general (#317876) next »