Prev: Session Vars loaded from MSSQL Query drop, those loadedfrom MYSQL Query stick
Next: [PHP] Duplicate session ids
From: "Alejandro Michelin Salomon" on 16 Sep 2010 10:16 Hi: I am working with a xml document that is validate with a schema. Within php the xml does not validate, but if i use a external validator the same xml validates with no problems. My Php is now 5.2.14, but i test with 5.3.1 and the same problem. I create a small program as example: libxml_use_internal_errors(true); $xDocXml = 'test-file.xml'; // xml $xmldoc = new DOMDocument(); $bErro = $xmldoc->load( $xDocXml ); // loads xml if ( $bErro ) { $return = $xmldoc->schemaValidate( 'nfe_v2.00.xsd' ); if ( !$return ) { $aErros = libxml_get_errors(); $sErro = ''; foreach ( $aErros as $oErro ) { switch ( $oErro->level ) { case LIBXML_ERR_WARNING: $sErrosErro .= ' Atenção ' . $oErro->code . ": \n"; break; case LIBXML_ERR_ERROR: $sErro .= ' Erro ' . $oErro->code . ": \n"; break; case LIBXML_ERR_FATAL: $sErro .= ' Erro Fatal ' . $oErro->code . ": \n"; break; } $sErro .= '--------------------------------------------' . "\n"; $sErro .= $oErro->message; $sErro .= ' Line: ' . $oErro->line . "\n"; $sErro .= ' Column: ' . $oErro->column . "\n"; $sErro .= ' Level: ' . $oErro->level . "\n"; } echo '<pre>'; echo $sErro; echo '</pre>'; } else echo 'VALID!!!!'; } Result a this moment: Erro 1839: -------------------------------------------- Element '{http://www.portalfiscal.inf.br/nfe}IE': [facet 'pattern'] The value '' is not accepted by the pattern 'ISENTO|[0-9]{0,14}'. Line: 59 Column: 0 Level: 2 Erro 1824: -------------------------------------------- Element '{http://www.portalfiscal.inf.br/nfe}IE': '' is not a valid value of the atomic type '{http://www.portalfiscal.inf.br/nfe}TIeDest'. Line: 59 Column: 0 Level: 2 This is the rule that fails : <xs:simpleType name="TIeDest"> <xs:annotation> <xs:documentation>Tipo Inscrição Estadual do Destinatário</xs:documentation> </xs:annotation> <xs:restriction base="xs:string"> <xs:whiteSpace value="preserve"/> <xs:pattern value="ISENTO|[0-9]{0,14}"/> </xs:restriction> </xs:simpleType> In the xml file the line 59 has : <IE></IE> The pattern for this tag is : <xs:pattern value="ISENTO|[0-9]{0,14}"/> When i change this <xs:pattern value="ISENTO|[0-9]{0,14}"/> to <xs:pattern value="[0-9]{0,14}|ISENTO"/> work ok, buts each document that has <IE>ISENTO</IE> fails validation. I attached a small rar file with the test case. How to change the pattern to meets the requirements: or value ISENTO ou number [0-9]{0,14} or empty ? Thanks in advance Alejandro M.S. |