Pauli: XSD validation mit PHP

Moin.

meine XML sieht in etwa so aus:

<?xml version="1.0" encoding="utf-8"?>  
<a:haus xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:a="https://xxx/a" > xmlns:b="https://xxx/b" xsi:schemaLocation="https://xxx/a https://xxx/a.xsd">  
 <a:dach>1</a:dach>  
 <a:haustuer>1</a:haustuer>  
 <a:zimmer>  
  <b:kueche>1</b:kueche>  
  <b:flur>2</b:flur>  
  ...  
 </a:zimmer>  
<a:haus>

Wenn diese jetzt mit der a.xsd validiert wird, kommt beim Liquid Studio ein "...valid against the schemas ...". Also alles ok. Per PHP schemaValidate() kommt folgende Meldung:

Internal error: xmlSchemaParseIncludeOrRedefine, could not build an URI from the schemaLocation.

Internal error: xmlSchemaParse, An internal error occurred.

Woran kann das liegen?

akzeptierte Antworten

  1. PS: Für den Namspace a: gibt es die a.xsd und für den Namespace b: gibt es die b.xsd. Die b.xsd wird natürlich in der a.xsd per include eingebunden.

  2. Tach!

    meine XML sieht in etwa so aus:

    <?xml version="1.0" encoding="utf-8"?>  
    <a:haus xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:a="https://xxx/a" > xmlns:b="https://xxx/b" xsi:schemaLocation="https://xxx/a https://xxx/a.xsd">  
     <a:dach>1</a:dach>  
     <a:haustuer>1</a:haustuer>  
     <a:zimmer>  
      <b:kueche>1</b:kueche>  
      <b:flur>2</b:flur>  
      ...  
     </a:zimmer>  
    <a:haus>
    

    Ich hab das für dich mal als Code und nicht als Zitat gekennzeichnet. Damit sieht man auch, dass da was falsch ist, nämlich ein >. Vielleicht nur ein Kopierfehler.

    Internal error: xmlSchemaParseIncludeOrRedefine, could not build an URI from the schemaLocation.

    Internal error: xmlSchemaParse, An internal error occurred.

    Woran kann das liegen?

    Das kann ich nicht sagen. Es gibt dazu auch nicht viele Fundstellen. xmlSchemaParseIncludeOrRedefine lässt aber darauf schließen, dass wohl was mit dem Einbinden nicht korrekt ist, also was nicht richtig oder doppelt referenziert. So liest sich das jedenfalls für mich.

    dedlfix.

    1. Ich hab das für dich mal als Code und nicht als Zitat gekennzeichnet. Damit sieht man auch, dass da was falsch ist, nämlich ein >. Vielleicht nur ein Kopierfehler.

      Die XML ist nur als Beispiel gedacht gewesen. Also Tippfehler von mir.

      Das kann ich nicht sagen. Es gibt dazu auch nicht viele Fundstellen. xmlSchemaParseIncludeOrRedefine lässt aber darauf schließen, dass wohl was mit dem Einbinden nicht korrekt ist, also was nicht richtig oder doppelt referenziert. So liest sich das jedenfalls für mich.

      Dann werd ich an der Stelle mal weitersuchen.

      Danke

    2. Lösung!

      Da das obige Beispiel nur ein kurz hingetipptes ist, konntet Ihr den Fehler nicht finden. In einer meiner vielen xsd's war beim inkludieren der Pfad mit einem Backslash angegeben. Das wars!

      <xs:include schemaLocation="KA\ka.xsd" />

      in folgendes geändert und es läuft

      <xs:include schemaLocation="KA/ka.xsd" />

      Vielleicht hilft's ja wem