091502CC8D7F487BA52A08145ED03720
  • Thomas Pollinger
  • 18.05.2018
  • DE/EN

Root Cause Analysis: "An XML comment cannot contain '--' and '-' cannot be the last character."

Wenn man Dinge ausprobiert, weil man versucht fehlende oder eingeschränkte Funktionalität zu umgehen. Kommt es sehr oft vor, vorallem bei Rendertags, dass man viele seltsame Konstrukte in Content-Klassen findet. Oft möchte man bekannte Konstrukte aus den Blockmarkierungen nachbilden. Und stellt dann fest, egal ob man es nur mit Rendertags oder nur mit Blockmarkierungen versucht, es fehlt immer was. Wie in diesem Fall, in dem man versucht hat Elemente hochreichen zulassen innerhalb eines Rendertag-Blocks.


Regel 37

Du löscht einen Code-Abschnitt, weil du dachtest, dass er überflüssig war. (Entwicklerweisheit)


Verhalten

Diese nachfolgenden Fehlermeldungen im wsms.log ist eine sehr interessante Sache:

Reddot.CMS.Rendering.Spots.SpotProcessor.ProcessSpot (:0)
Application
Navigation
Locals: Project: {GUID}; ProjectVariant: {GUID}; Language(Page): {GUID}; Page(ID/UUID): {ID}; ContentClass: {GUID}; RenderMode: Preview; RequestId: {ID}; 
SpotProcessor.ProcessSpot:System.Xml.XmlException: An XML comment cannot contain '--', and '-' cannot be the last character. Line 241, position 3.
   at System.Xml.XmlTextReaderImpl.Throw(Exception e)
   at System.Xml.XmlTextReaderImpl.ParseCDataOrComment(XmlNodeType type, Int32& outStartPos, Int32& outEndPos)
   at System.Xml.XmlTextReaderImpl.ParseCDataOrComment(XmlNodeType type)
   at System.Xml.XmlTextReaderImpl.ParseComment()
   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 o.g. Content-Klasse wurde das Konstrukt verbaut:

<reddot:cms>
  <!-- <%ioRangeList%> -->
    <htmltext>...</htmltext>
  <!-- <%/ioRangeList%> -->
</reddot:cms>

Lösung

Einfach die Kommentarblöcke entfernen und alles war wieder gut:

<reddot:cms>
  <htmltext>...</htmltext>
</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.

       

Downloads

 

QuickLinks

 

Channel