Home
Über mich
Blog
Veröffentlichungen
IT-Trainings
Impressum


XML Kommentare

Zusammenfassung:

Wie überall in der Programmierung, können auch in XML-Dokumenten sowie in den darauf aufbauenden Programmierungen ergänzende Kommentare sehr hilfreich sein, um die Wartung komplexer Anwendungen effizient zu gestalten.

XML Kommentare

Ergänzende Kommentare können weitere Hilfestellung geben. Ein Standard XML Kommentar beginnt mit <!-- und endet mit -->.

<root>
   <!-- this is a comment, you are free to write down your CV -->
</root>

XML-Kommentare in XSL erzeugen

In XSL ist es angebracht, zum besseren Verständnis der Programmlogik lokale Kommentare einzubauen, die nicht im Ergebnisdokument erscheinen. Simmvolle Kommentare können die Wartung der Programme sehr erleichtern, daher sind sie unbedingt zu empfehlen. Wie in jedem XML-Dokument, gilt auch hier die Syntax "<!-- Kommentar -->".

<erg>
  <!-- dieser Kommentar gilt nur lokal in XSL, 
       wird nicht im Ergebnisdokument erscheinen -->
</erg>

Die Ausgabe im Ergebnisdokument lautet wie beabsichtigt ohne Kommentar:

<erg/>

Um im Ergebnisdokument einen Kommentar sichtbar zu machen, können wir mit "<xsl:comment>" arbeiten.

<erg>
  <xsl:comment>Dieser Kommentar wird im Ergebnis erscheinen</xsl:comment>
</erg>

Die Ausgabe im Ergebnisdokument lautet:

   <erg><!--Dieser Kommentar wird im Ergebnis erscheinen--></erg>

XML-Kommentare in XSL auswerten

Umgekehrt ist es auch möglich, mit Hilfe von XSLT die Kommentare in den Input-Dokumenten auszuwerten. Betrachten wir folgendes XML Input Dokument, das - abgesehen von einem "root"-Node - ausschließlich XML-Kommentare aufweist.

<root>
<!--Kommentar 1-->
<!--Kommentar 2-->
<!--Kommentar 3-->
<!--Kommentar 4-->
</root>

Nun soll versucht werden, diese Kommentare in XSLT auszuwerten. Das funktioniert recht einfach:

<xsl:stylesheet version="1.0" 
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
  <xsl:template match="/">
    <Kommentare>
      <xsl:for-each select="/root/comment()">
        <info>
          <xsl:value-of select="."/>
        </info>
      </xsl:for-each>
    </Kommentare>
  </xsl:template>
</xsl:stylesheet>

Das Ergebnis ist wenig überraschend:

<?xml version="1.0" encoding="UTF-8"?>
<Kommentare>
	<info>Kommentar 1</info>
	<info>Kommentar 2</info>
	<info>Kommentar 3</info>
	<info>Kommentar 4</info>
</Kommentare>

Das obige XSL-Stylesheet konzentriert sich jedoch nur auf jene Kommentare, die unmittelbar unterhalb des "root"-Elements stehen. In der Regel sieht die Datenstruktur jedoch etwas komplexer aus:

<root>
 <!--Kommentar 1-->
 <Ebenea>
  <ka>
   <!--Kommentar 2-->
  </ka>
  <Ebeneb>
   <kb>
    <!--Kommentar 3-->
   </kb>
   <Ebenec>
    <kc>
     <!--Kommentar 4-->
    </kc>
   </Ebenec>
  </Ebeneb>
 </Ebenea>
</root>

Möchten wir nun nicht nur sämtliche Kommentare auf unterschiedlichen Ebenen auslesen, sondern auch den XPath zu dieser Ebene wissen, so können wir uns hiermit behelfen:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
 <xsl:template match="/">
  <Kommentare>
   <xsl:for-each select="/*/descendant-or-self::*/comment()">
    <info>
     <xsl:attribute name="xpath">
      <xsl:for-each select="ancestor-or-self::*">
       <xsl:text>/</xsl:text>
       <xsl:value-of select="name()"/>
      </xsl:for-each>
     </xsl:attribute>
     <xsl:value-of select="."/>
    </info>
   </xsl:for-each>
  </Kommentare>
 </xsl:template> 
</xsl:stylesheet>

Das Ergebnis hilft uns weiter:

<Kommentare>
 <info 
    xpath="/root">Kommentar 1</info>
 <info 
    xpath="/root/Ebenea/ka">Kommentar 2</info>
 <info 
    xpath="/root/Ebenea/Ebeneb/kb">Kommentar 3</info>
 <info 
    xpath="/root/Ebenea/Ebeneb/Ebenec/kc">Kommentar 4</info>
</Kommentare>

qrpic/Kommentare.jpg

wg / 30. September 2017




Fragen? Anmerkungen? Tips?

Bitte nehmen Sie Kontakt zu mir auf (info10@wilfried-grupe.de).



Vielen Dank für Ihr Interesse an meiner Arbeit.


V.i.S.d.P.: Wilfried Grupe * Klus 6 * 37643 Negenborn

Mobil: 0151. 750 360 61 * eMail: info10@wilfried-grupe.de