091502CC8D7F487BA52A08145ED03720
  • Thomas Pollinger
  • 04.05.2018
  • DE/EN

Root Cause Analysis: "The *script* start tag on line x position xx does not match the end tag of *query*"

Zeit- oder Projektdruck und nicht mit voller Konzentration bei der Arbeit. Verursachen gerne immer wieder Probleme, welche meist bei Copy'n'Paste passieren. Daher ist es wichtig, egal bei was, immer konzentriert und gewissenhaft beim Thema zu sein. Wie in diesem Fall.


Regel 35

Der Anwender steht immer im Mittelpunkt – und da steht er jedem im Weg. (Entwicklerweisheit)


Verhalten

Diese nachfolgende Fehlermeldung im wsms.log ist eine sehr interessante:

Reddot.CMS.Rendering.Spots.SpotProcessor.ProcessSpot (:0)
Locals: Project: {GUID}; ProjectVariant: {GUID}; Language(Page): {GUID}; Page(ID/UUID): {ID}; ContentClass: {GUID}; RenderMode: Preview; RequestId: {ID}; 
SpotProcessor.ProcessSpot:System.Xml.XmlException: The 'script' start tag on line 2 position 77 does not match the end tag of 'query'. Line 29, position 19.
   at System.Xml.XmlTextReaderImpl.Throw(Exception e)
   at System.Xml.XmlTextReaderImpl.ThrowTagMismatch(NodeData startTag)
   at System.Xml.XmlTextReaderImpl.ParseEndElement()
   at System.Xml.XmlTextReaderImpl.ParseElementContent()
   at System.Xml.XmlLoader.LoadNode(Boolean skipOverWhitespace)
   at System.Xml.XmlLoader.LoadDocSequence(XmlDocument parentDoc)
   at System.Xml.XmlDocument.Load(XmlReader reader)
   at OpenText.WS.MS.Core.Extensions.XmlDocumentExtension.LoadXml(XmlDocument xmlDocument, String xml, Boolean considerNamespaces)
   at OpenText.WS.MS.Cache.Xml.XmlCache.GetXmlDocument(String content, CacheItemPriority priority)
   at Reddot.CMS.Rendering.Spots.XmlSpot.Render(String spotContent, IRenderStream output, IObjectLoadManager objectLoadManager, IPageRenderingContext context, ITagProcessor tagProcessor, TagTools toolsInstance)
   at Reddot.CMS.Rendering.Spots.XmlSpot.Render(String spotContent, IRenderStream output, IObjectLoadManager objectLoadManager, IPageRenderingContext context)
   at Reddot.CMS.Rendering.Spots.SpotProcessor.ProcessSpot(String content, SpotTag spotTag, IRenderStream outputStream)



Ursache

In der Content-Klasse wurde diese Ausgabe verbaut:

<reddot:cms>
  <if>
    <query valuea="Context:CurrentRenderMode" operator="==" valueb="Int:2"><script type="text/javascript"><htmltext>
var getUrlParameterValue = function(name) {
    ...
}
var includeCheck = function() {
    ...
}

includeCheck();
</script><noscript>
<b>Bitte aktivieren Sie Javascript und Cookies in Ihrem Browser</b> </noscript>
    </htmltext></query>
  </if>
</reddot:cms>

und es wurde die Reihenfolge der Tags nicht eingehalten..


Lösung

Die Lösung ist eigentlich recht einfach:

<reddot:cms>
  <if>
    <query valuea="Context:CurrentRenderMode" operator="==" valueb="Int:2"><htmltext><script type="text/javascript">
var getUrlParameterValue = function(name) {
    ...
}
var includeCheck = function() {
    ...
}

includeCheck();
</script><noscript>
<b>Bitte aktivieren Sie Javascript und Cookies in Ihrem Browser</b> </noscript>
    </htmltext></query>
  </if>
</reddot:cms>

Über den Autor:
Thomas Pollinger

... ist Senior Site Reliability Engineer bei der Vodafone GmbH in Düsseldorf. Seit dem Jahr 2007 betreut er zusammen mit seinen Kollegen die OpenText- (vormals RedDot-) Plattform Web Site Management für die deutsche Konzernzentrale.

Er entwickelt Erweiterungen in Form von Plug-Ins und PowerShell Skripten. Seit den Anfängen in 2001 (RedDot CMS 4.0) kennt er sich speziell mit der Arbeitweise und den Funktionen des Management Server aus.