091502CC8D7F487BA52A08145ED03720
  • Thomas Pollinger
  • 27.04.2018
  • DE/EN

Root Cause Analysis: "The 'query' start tag on line 7 position 6 does not match the end tag of 'if'"

Wie es der Zufall so will, meist findet mal neue Fehlermeldunge in den Logs, wenn man sie eigentlich nicht bruachen kann. Vor allem sind dann auch gerne Meldungen dabei, welche ein recht einfache Ursache haben. Jedoch erstmal richtig schlimm aussehen. Wie in diesem Fall.


Regel 34

10. Kritisiere Code und nicht Personen. Sei nett zum Coder, aber nicht zum Code.
Versuche immer, deine Kommentare über Code so positiv und konstruktiv wie möglich zu halten. (IT-Professor Frank Bush)


Verhalten

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

Locals: Project: {GUID}; ProjectVariant: {GUID}; Language(Page): {GUID}; Page(ID/UUID): {ID}; ContentClass: {GUID}; RenderMode: Preview; RequestId: 13703; 
SpotProcessor.ProcessSpot:System.Xml.XmlException: The 'query' start tag on line 7 position 6 does not match the end tag of 'if'. Line 11, position 4.
   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

Ineiner Content-Klasse wurde diese Fallunterscheidung verbaut:

<reddot:cms>
  <if>
    <query ...>
      ...
    </query>
    <query type="else">
      ...    
  </if>
</reddot:cms>

und es fehlte einfach nur das schließende </query> Tag.


Lösung

Die Lösung ist eigentlich recht einfach:

<reddot:cms>
  <if>
    <query ...>
      ...
    </query>
    <query type="else">
      ...
    </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.