Announcement

Collapse
No announcement yet.

Wert aendern bei gleichnamigen tags

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

  • Wert aendern bei gleichnamigen tags

    Hallo,

    ich moechte eine Transformation auf folgeden XML Auszug anwenden
    Code:
    ...
    <context-param>
      <param-name>webmaster</param-name>
      <param-value>[email protected]</param-value>
    </context-param>
    <context-param>
      <param-name>persistance</param-name>
      <param-value>false</param-value>
    </context-param>
    <context-param>
      <param-name>hostname</param-name>
      <param-value>localhost</param-value>
    </context-param>
    ...
    Die Transormation soll bewirken, dass false in
    Code:
    ...
    <context-param>
      <param-name>persistance</param-name>
      <param-value>false</param-value>
    </context-param>
    ...
    nach true umgewandelt wird. Allerdings weiss ich nicht, wie ich das ueber xsl erreichen kann. Ich muss param-value irgendwie eindeutig identifizieren?!

    Waere super, wenn mir jemand helfen koennte.

    Danke,
    Walter

  • #2
    Hier im Rahmen einer Identitätstransformation gezeigt, sollte speziell der blau formatierte Code helfen:

    Code:
    <xsl:template match="@* | node()">
      <xsl:copy>
        <xsl:apply-templates select="@* | node()"/>
      </xsl:copy>
    </xsl:template> 
      
    <xsl:template match="param-value[text()='false']">
      <param-value>true</param-value>
    </xsl:template>

    Comment


    • #3
      Hallo Thomas,

      vielen Dank dafuer. Allerdings nehme ich an, dass dann ueberall im xml-file false-Werte auf true gesetzt werden. Ich haette ein anderes Beispiel nehmen sollen:

      Code:
      ...
      <context-param>
        <param-name>persistance</param-name>
        <param-value>false</param-value>
      </context-param>
      <context-param>
        <param-name>connect</param-name>
        <param-value>false</param-value>
      </context-param>
      ...
      In diesem Fall moechte ich innerhalb der Datei nur 'false' von 'persistance' auf 'true' setzen.

      Tut mir Leid, dass ich das nicht im vornherein klar gemacht habe.

      Vielen Dank,
      Walter

      Comment


      • #4
        Dann probiere es so:

        Code:
        <xsl:template match="param-value[../param-name='persistance'][text()='false']">
          <param-value>true</param-value>
        </xsl:template>

        Comment

        Working...
        X