Veröffentlichungsdatum: 02. Juli 2015
Änderungsdatum: 08. April 2021
Bei Fehlern in der XML-Struktur erleichert Ihnen Weblication® den Weg zur Problemlösung mit gezielten Hinweisen.
Weblication® verwendet das XML-Format, um Inhalte und Konfigurationsdaten zu speichern. Bei der Verwendung von XML gelten verbindliche Regeln, welche die Notation und das Format der XML-Dateien definieren. XML-Dateien müssen "valide und wohlgeformt" sein (siehe auch Artikel "Grundlagen von XML").
Sind in der XML-Struktur nicht XML-konforme Angaben gesetzt, erzeugt dies in den meisten Fällen einen XML-Fehler. Ein Fehler kann sich bereits während der XSL-Transformation auswirken oder erst nach der Transformation einen XML-Fehler in der erzeugten Seite generieren. Diese beiden Fälle zeigen wir Ihnen auf Grundlage der BASE Projektbasis nachfolgend. Beachten Sie auch die Hinweise ganz unten!
Ein Fehler in der XML-Struktur der zu transformierenden Datei führt bei Aufruf der Seite zu einem Seitenabbruch. Dem Seitenbesucher wird in den meisten Fällen nur eine leere / weiße Seite angezeigt. Einem eingeloggten Weblication® CMS Administrator wird zum Seitenabbruch eine Hinweismeldung (Load XML ERROR, siehe Screen) angezeigt.
Die Hinweis-Box liefert zum einen die genaue Angabe, an welcher Stelle der Fehler zu suchen ist. Zum anderen enthält diese einen Open XML Link, über welchen Sie detailliertere Angaben zum Fehler in der zu transformierenden Seiten finden. Der Info-Link führt Sie per Klick direkt auf diesen Artikel und über "Backend öffnen" gelangen Sie direkt in der Weblication® CMS Backend und können über die Verzeichnisstruktur die zuletzt geänderte Datei für eine Fehlerbehebung erreichen.
Die XML-Fehlerinformationen enthalten die genaue Angabe, in welcher Zeile und Spalte der zu transformierenden Datei der Fehler zu suchen ist. Der in diesem Beispiel angeführte Fehler wurde durch ein doppeltes lang-Attribut im html-Tag der standard.wDocument.php provoziert. Die Fehlermeldung weist darauf hin:
error on line 29 at column 87: Attribute lang redefined
Sie müssen lediglich die im tmpHTTP-Verzeichnis temporär abgelegte Seite im Quelltext aufrufen (z.B. bei Chrome oder Firefox über Tastenkombination STRG+U). Gehen Sie dann zur genannten Zeile (line) und Spalte (column), um die Stelle genauer zu analysieren. Ggf. kann zumindest die Spaltennummer nicht ganz genau passen, weshalb eine Fehlersuche im Umkreis der genannten Stelle erforderlich sein kann.
Ein Fehler in der XML-Struktur der schon generierten Seite wird Ihnen ab CMS-Version 9.x - als Administrator eingeloggt - über ein "Ampel-Symbol" im Weblication® Panel signalisiert. Durch Klick auf das rote Ampel-Symbol wird rechts oben in der Seite die Box mit den Seiteninformationen (siteinfo) angezeigt. Durch Klick auf den Link "Diese Seite enthält einen XML-Fehler" erhalten Sie detailliertere Angaben zum Fehler in der generierten Seite.
Die XML-Fehlerinformationen enthalten die genaue Angabe, in welcher Zeile und Spalte der generieren Seite der Fehler zu suchen ist. Der in diesem Beispiel angeführte Fehler wurde durch eine Javascript-Definition verursacht, die ein kaufmännisches UND (&) enthält. Die Fehlermeldung weist darauf hin:
error on line 44 at column 59: xmlParseEntityRef: no name
Sie müssen lediglich die im tmpHTTP-Verzeichnis temporär abgelegte Seite im Quelltext aufrufen (z.B. bei Chrome oder Firefox über Tastenkombination STRG+U). Gehen Sie dann zur genannten Zeile (line) und Spalte (column), um die Stelle genauer zu analysieren. Ggf. kann zumindest die Spaltennummer nicht ganz genau passen, weshalb eine Fehlersuche im Umkreis der genannten Stelle erforderlich sein kann.
Nachfolgend ein Javascript Beispiel-Code zu diesem Fall, welches einen XML-Fehler in der bereits transformierten Seite wirft. Das Beispiel setzt innerhalb der standard.wDocument.php ein Javascript ein, das einmal mit cdata-section im script-Tag gesetzt ist und einmal ohne.
JS in der standard.wDocument.php gesetzt:
<script> /*<![CDATA[*/ console.log('1&2'); /*]]>*/ </script>
<!-- JS in der standard.wDocument.php gesetzt --> <script>/*<![CDATA[*/ var locationHrefNew = location.href.replace(/#.*/, ''); locationHrefNew = locationHrefNew.replace(/[\?\&]$/g, ''); /*]]>*/</script>
<div id="fb-root"></div> <script> /*<![CDATA[*/(function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "//connect.facebook.net/de_DE/sdk.js#xfbml=1&version=v2.3"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk')); /*]]>*/</script> <div class="fb-page" data-href="https://www.facebook.com/tagesschau" data-width="220" data-small-header="false" data-adapt-container-width="true" data-hide-cover="false" data-show-facepile="true" data-show-posts="true"><div class="fb-xfbml-parse-ignore"><blockquote cite="https://www.facebook.com/tagesschau"><a href="https://www.facebook.com/tagesschau">Tagesschau</a></blockquote></div></div>
<div id="fb-root"></div> <script> /*<![CDATA[*/(function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "//connect.facebook.net/de_DE/sdk.js#xfbml=1&version=v2.3"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk')); /*]]>*/</script> <div class="fb-page" data-href="https://www.facebook.com/tagesschau" data-width="220" data-small-header="false" data-adapt-container-width="true" data-hide-cover="false" data-show-facepile="true" data-show-posts="true"><div class="fb-xfbml-parse-ignore"><blockquote cite="https://www.facebook.com/tagesschau"><a href="https://www.facebook.com/tagesschau">Tagesschau</a></blockquote></div></div>
<div id="fb-root"></div> <script> (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "//connect.facebook.net/de_DE/sdk.js#xfbml=1&version=v2.3"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk')); </script> <div class="fb-page" data-href="https://www.facebook.com/tagesschau" data-width="220" data-small-header="false" data-adapt-container-width="true" data-hide-cover="false" data-show-facepile="true" data-show-posts="true"><div class="fb-xfbml-parse-ignore"><blockquote cite="https://www.facebook.com/tagesschau"><a href="https://www.facebook.com/tagesschau">Tagesschau</a></blockquote></div></div>