Veröffentlichungsdatum: 02. Juli 2015
Änderungsdatum: 23. Oktober 2024
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>
Verfügbar ab den Beta-Versionen nach CMS-Version 019.002.000.000
Bei aktivierter Conf-Einstellung ( /wConf/editor/debug/@showXmlError = "1" ) weist die Software im Editor in der oberen Leiste mit einem roten Balken auf XML-Fehler hin. Die Funktion soll helfen, auch XML-Fehler korrigieren zu können, welche nicht direkt ersichtlich sind. Ist die Conf-Einstellung deaktiviert, erfolgt der Hinweis unscheinbar im rechten oberen Eck.
Fehler im XML können durch Skripte/Templates in der Software bedingt sein oder Ihre Ursache im Projekt haben.
Software bedingte Fehler werden behoben, sobald diese bekannt werden. Ebenso XML-Fehler, welche im Standard mit dem BASE-Projekt und dessen Skripten/Templates ausgeliefert werden.
Ein Klick auf den roten Balken zeigt bei Aufruf im Firefox die konkrete Stelle im Quelltext an. Die Vorgehensweise ist wie bereits weiter oben beschrieben.
<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>