xsl:value-of verwendet xsl:element name

Habe ich eine eingehende XML-Datei mit einer Liste-Struktur:

<list>
  <listItem>
    <name>elementOne</name>
    <value>elementOneValue</name>
  </listItem>
  <listItem>
    <name>elementTwo</name>
    <value>elementTwoValue</name>
  </listItem>
</list>

Die ich versuche zu konvertieren, um diese Struktur:

<elementOne>elementOneValue</elementOne>
<elementTwo>elementTwoValue</elementTwo>

Dies ist einfache Logik zu implementieren, die mit XSL, aber ich bin mit aber zu Komplikationen.

<xsl:for-each select="/list/listItem">
  <xsl:element name="<xsl:value-of select="name"/>">
    <xsl:value-of select="value"/>
  </xsl:element>
</xsl:for-each>

Nicht funktioniert, denn ich gehe davon aus das sequentielle doppelte Anführungszeichen sind, bricht die <xsl:element> tag

<xsl:for-each select="/list/listItem">
  <<xsl:value-of select="name"/>>
    <xsl:value-of select="value"/>
  </<xsl:value-of select="name"/>>
</xsl:for-each>

Nicht funktioniert, weil ich nicht verwenden können << oder >> und

<xsl:for-each select="/list/listItem">
  &lt;<xsl:value-of select="name"/>&gt;
    <xsl:value-of select="value"/>
  &lt;/<xsl:value-of select="name"/>&gt;
</xsl:for-each>

Nicht, weil ich am Ende mit > und < in meinem code statt der XML-parseable < oder >. Ich erwartete, dass dies eine sehr einfache Lösung, aber ich kann nicht finden, werden alle Datensätze, für die es auf dem internet. Was ist die einfache Lösung, die ich im Blick?

  • Gute Frage, +1. Siehe meine Antwort für eine vollständige und kurze Lösung, mit <xsl:element>. 🙂
Schreibe einen Kommentar