tag:forum.selfhtml.org,2005:/selfXSD validation mit PHP – SELFHTML-Forum2019-06-27T09:43:28Zhttps://forum.selfhtml.org/self/2019/jun/26/xsd-validation-mit-php/1751240#m1751240Pauli2019-06-26T06:54:40Z2019-06-26T08:42:41ZXSD 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#m1751242Pauli2019-06-26T07:17:48Z2019-06-26T07:17:48ZXSD 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#m1751243dedlfix2019-06-26T08:06:08Z2019-06-26T08:06:08ZXSD 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#m1751253Pauli2019-06-26T09:24:31Z2019-06-26T09:24:31ZXSD 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#m1751362Pauli2019-06-27T09:43:28Z2019-06-27T09:43:28ZXSD 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>