tag:forum.selfhtml.org,2005:/self XSD validation mit PHP – SELFHTML-Forum 2019-06-27T09:43:28Z https://forum.selfhtml.org/self/2019/jun/26/xsd-validation-mit-php/1751240#m1751240 Pauli 2019-06-26T06:54:40Z 2019-06-26T08:42:41Z XSD validation mit PHP <p>Moin.</p> <p>meine XML sieht in etwa so aus:</p> <pre><code class="block language-xml"><span class="token prolog"><?xml version="1.0" encoding="utf-8"?></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">a:</span>haus</span> <span class="token attr-name"><span class="token namespace">xmlns:</span>xsi</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>http://www.w3.org/2001/XMLSchema-instance<span class="token punctuation">"</span></span> <span class="token attr-name"><span class="token namespace">xmlns:</span>a</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>https://xxx/a<span class="token punctuation">"</span></span> <span class="token punctuation">></span></span> xmlns:b="https://xxx/b" xsi:schemaLocation="https://xxx/a https://xxx/a.xsd"> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">a:</span>dach</span><span class="token punctuation">></span></span>1<span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">a:</span>dach</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">a:</span>haustuer</span><span class="token punctuation">></span></span>1<span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">a:</span>haustuer</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">a:</span>zimmer</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">b:</span>kueche</span><span class="token punctuation">></span></span>1<span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">b:</span>kueche</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">b:</span>flur</span><span class="token punctuation">></span></span>2<span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">b:</span>flur</span><span class="token punctuation">></span></span> ... <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">a:</span>zimmer</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">a:</span>haus</span><span class="token punctuation">></span></span> </code></pre> <p>Wenn diese jetzt mit der a.xsd validiert wird, kommt beim Liquid Studio ein "...valid against the schemas ...". Also alles ok. Per PHP <a href="https://www.php.net/manual/de/domdocument.schemavalidate.php" rel="nofollow noopener noreferrer">schemaValidate()</a> kommt folgende Meldung:</p> <blockquote> <p>Internal error: xmlSchemaParseIncludeOrRedefine, could not build an URI from the schemaLocation.</p> </blockquote> <blockquote> <p>Internal error: xmlSchemaParse, An internal error occurred.</p> </blockquote> <p>Woran kann das liegen?</p> https://forum.selfhtml.org/self/2019/jun/26/xsd-validation-mit-php/1751242#m1751242 Pauli 2019-06-26T07:17:48Z 2019-06-26T07:17:48Z XSD validation mit PHP <p>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.</p> https://forum.selfhtml.org/self/2019/jun/26/xsd-validation-mit-php/1751243#m1751243 dedlfix 2019-06-26T08:06:08Z 2019-06-26T08:06:08Z XSD validation mit PHP <p>Tach!</p> <blockquote> <p>meine XML sieht in etwa so aus:</p> <pre><code class="block language-xml"><span class="token prolog"><?xml version="1.0" encoding="utf-8"?></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">a:</span>haus</span> <span class="token attr-name"><span class="token namespace">xmlns:</span>xsi</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>http://www.w3.org/2001/XMLSchema-instance<span class="token punctuation">"</span></span> <span class="token attr-name"><span class="token namespace">xmlns:</span>a</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>https://xxx/a<span class="token punctuation">"</span></span> <span class="token punctuation">></span></span> xmlns:b="https://xxx/b" xsi:schemaLocation="https://xxx/a https://xxx/a.xsd"> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">a:</span>dach</span><span class="token punctuation">></span></span>1<span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">a:</span>dach</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">a:</span>haustuer</span><span class="token punctuation">></span></span>1<span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">a:</span>haustuer</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">a:</span>zimmer</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">b:</span>kueche</span><span class="token punctuation">></span></span>1<span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">b:</span>kueche</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">b:</span>flur</span><span class="token punctuation">></span></span>2<span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">b:</span>flur</span><span class="token punctuation">></span></span> ... <span class="token tag"><span class="token tag"><span class="token punctuation"></</span><span class="token namespace">a:</span>zimmer</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span><span class="token namespace">a:</span>haus</span><span class="token punctuation">></span></span> </code></pre> </blockquote> <p>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 <code>></code>. Vielleicht nur ein Kopierfehler.</p> <blockquote> <blockquote> <p>Internal error: xmlSchemaParseIncludeOrRedefine, could not build an URI from the schemaLocation.</p> </blockquote> <blockquote> <p>Internal error: xmlSchemaParse, An internal error occurred.</p> </blockquote> <p>Woran kann das liegen?</p> </blockquote> <p>Das kann ich nicht sagen. Es gibt dazu auch nicht viele Fundstellen. <code>xmlSchemaParseIncludeOrRedefine</code> 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.</p> <p>dedlfix.</p> https://forum.selfhtml.org/self/2019/jun/26/xsd-validation-mit-php/1751253#m1751253 Pauli 2019-06-26T09:24:31Z 2019-06-26T09:24:31Z XSD validation mit PHP <blockquote> <p>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 <code>></code>. Vielleicht nur ein Kopierfehler.</p> </blockquote> <p>Die XML ist nur als Beispiel gedacht gewesen. Also Tippfehler von mir.</p> <blockquote> <p>Das kann ich nicht sagen. Es gibt dazu auch nicht viele Fundstellen. <code>xmlSchemaParseIncludeOrRedefine</code> 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.</p> </blockquote> <p>Dann werd ich an der Stelle mal weitersuchen.</p> <p>Danke</p> https://forum.selfhtml.org/self/2019/jun/26/xsd-validation-mit-php/1751362#m1751362 Pauli 2019-06-27T09:43:28Z 2019-06-27T09:43:28Z XSD validation mit PHP <p>Lösung!</p> <p>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!</p> <p><code><xs:include schemaLocation="KA\ka.xsd" /></code></p> <p>in folgendes geändert und es läuft</p> <p><code><xs:include schemaLocation="KA/ka.xsd" /></code></p> <p>Vielleicht hilft's ja wem</p>