Announcement

Collapse
No announcement yet.

Frage: über XSLT alle Nodes in XML durchgehen und mit ihrem Tag ausgeben

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Frage: über XSLT alle Nodes in XML durchgehen und mit ihrem Tag ausgeben

    Hallo,

    Bitte um Hilfe in der folgenden Frage; ich möchte eine XML mittels XSLT style sheet in txt so umwandeln, dass die tags hierarchisch mit dem inhalt mit einem Punkt verbunden werden und Inhalte die länger als 10 zeichen sind einen zeilenumbruch kriegen. Die Tags kenne ich nicht also sollte das generisch gemacht werden (mittels XPATH node()?)

    Hier ein Beispiel:

    XML-Datei:
    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="mytransformer.xsl"?>
    <a>
    <b>
    <msg>test text eins</msg>
    </b>
    </a>
    <f>
    <msg>test text zwei bla bla bla bla</msg>
    </f>

    die Ausgabe in eine txt-Datei soll so ausschauen:

    a.b.msg
    test text eins
    f.msg
    test text
    zwei bla b
    la bla bla

    Danke!

  • #2
    Ansatz zum Weiterdenken:
    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      <xsl:output method="text" encoding="UTF-8"/>
      <xsl:template match="root">
      
      <xsl:apply-templates select="*|text()"/>
      
      </xsl:template>
      
      <xsl:template match="*">
        <xsl:value-of select="name()"/>
        <xsl:if test="not(text())"><xsl:text>.</xsl:text></xsl:if>
        <xsl:apply-templates/>
      </xsl:template>
    
      <xsl:template match="text()">
        <xsl:text>&#xA;</xsl:text><xsl:value-of select="."/>
        <xsl:apply-templates/><xsl:text>&#xA;</xsl:text>
      </xsl:template>
       
    </xsl:stylesheet>
    Ergebnis:
    a.b.msg
    test text eins
    f.msg
    test text zwei bla bla bla bla

    Es müssten noch die erhaltenen Textinhalte auf die gewünschten 10 Zeichen pro Zeile gebracht werden. Dazu eigenen sich entweder rekursiv aufgerufene Templates oder neuere String-Funktionen unter XPath 2.0. Hinweis: Das root-Element wurde noch eingefügt, da ein solches beim XML-Dokument fehlt.

    Comment

    Working...
    X