Announcement

Collapse
No announcement yet.

XML mittels XSLT neu anordnen!?

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

  • XML mittels XSLT neu anordnen!?

    Hallo zusammen,

    ich bin total XML Neuling, deswegen entschuldigt meine Unwissenheit

    Ich muss ein bestehendes XML Dokument so anordnen, dass im Ergebnisdokument alle Elemente genau eine Ebene unter dem Wurzelement stehen.
    Meiner Meinung nach geht dass mit XSLT.

    Nach anschauen von Beispielen im Netz verstehe wie ich, wie man zB einzelne Elemente in HTML Datei oder ähnlichem ausgibt. Nur wie man einfach eine XML neu anordnet ist mir noch nicht ganz klar.


    Schablone:
    <xsl:template match="/"> //Alle Elemente Ansprechen
    ???????? // Befehl den ich nicht kenne
    </xsl:template>


    Wär nett wenn ihr mir helfen könnt!

    Schönen Abend noch

    Mark

  • #2
    Probiere diesen Ansatz:
    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="xml" version="1.0" encoding="UTF-8" indent="yes"/>
    
      <xsl:template match="/">
        <xsl:element name="{*[1]/name()}">
          <xsl:apply-templates select="*[1]//*"/>
        </xsl:element>
      </xsl:template>
    
      <xsl:template match="*">
        <xsl:element name="{name()}">
          <xsl:copy-of select="@*"/>
          <xsl:if test="not(*)">
            <xsl:value-of select="."/>
          </xsl:if>
        </xsl:element>  
      </xsl:template>
    
    </xsl:stylesheet>
    Testbeispiel:
    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <root>
      <test1 x="1" y="a">
        <test2>
          <test3>abc</test3>    
        </test2>  
      </test1>
      <test1 x="2" y="b">
        <test2>
          <test3>def</test3>    
        </test2>  
      </test1>
      <test1 x="3" y="c">
        <test2>
          <test3>ghi</test3>    
        </test2>  
      </test1>
    </root>
    Ergebnis:
    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <root>
      <test1 x="1" y="a"/>
      <test2/>
      <test3>abc</test3>
      <test1 x="2" y="b"/>
      <test2/>
      <test3>def</test3>
      <test1 x="3" y="c"/>
      <test2/>
      <test3>ghi</test3>
    </root>

    Comment

    Working...
    X