Announcement

Collapse
No announcement yet.

value-of -> select mit variable und Knoteninhalt?

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

  • value-of -> select mit variable und Knoteninhalt?

    Hallo,

    wenn ich in einem Template, den Inhalt des entsprechenden Knotens haben will mache ich ja folgendes:

    Code:
    <xsl:value-of select="." />
    Nun hätte ich das jedoch gern in Verbindung mit einer Variable:
    Code:
    <xsl:value-of select="$var/." />
    (Der Punkt soll mir hier auch den Inhalt des Knotens wiedergeben - funktioniert aber so nicht)

    Durch das ganze soll soll dann eine Absolute Pfadangaben rauskommen.

    Jedoch funktioniert das so nicht, habe schon mehreres ausprobiert, es aber nicht hinbekommen.

    Danke im voraus!
    n26

  • #2
    Das lässt sich so realisieren (auf den Textknoten bezogen):
    Code:
    <xsl:variable name="var" select="'elementname'"/>
    <xsl:value-of select="child::node()[local-name()=$var]/text()"/>

    Comment


    • #3
      Danke schonmal für die Antwort, aber das ist leider nicht ganz das, was ich brauche.

      Ich beschreibe das ganze mal genauer:

      de.xml
      Code:
      <lang>
      	<title>Testtitel</title>
      	<date>
      		<day>
      			<monday>Montag</monday>
      			<tuesday>Dienstag</tuesday>
      			<wednesday>Mittwoch</wednesday>
      			<thursday>Donnerstag</thursday>
      			<friday>Freitag</friday>
      			<saturday>Samstag</saturday>
      			<sunday>Sonntag</sunday>
      		</day>
      	</date>
      </lang>
      In der aufgerufenen XML steht jetzt u.a. z.B.:
      Code:
      <lang>date/day/monday</lang>
      Folgendes habe ich dafür im Stylesheet:
      Code:
      <xsl:variable name="lang" select="document('de.xml')/lang" />
      <xsl:template match="lang">
      	<xsl:variable name="content" select="." />
      	<xsl:value-of select="$lang[local-name()=$content]/text()" />
      </xsl:template>
      Ich habe jetzt mal dein (Thomas Meinikes) Bsp. eingefügt um die Stelle zu verdeutlichen.

      Das ganze funktioniert so aber nicht.

      Ich hoffe das Beispiel konnte jetzt besser beschreiben, was ich erreich will.

      Danke,
      n26

      Comment


      • #4
        Im lang-Element steht die Zeichenkette "data/day/monday" und nicht etwa ein XPath-Ausdruck! Diese lässt sich so auflösen:
        <xsl:value-of select="$lang/child::node()[local-name()='date']/child::node()[local-name()='day']/child::node()[local-name()='monday']/text()"/>

        (Klappt auch und ergibt Montag.)

        Insofern ist hier eine rekursive Zerlegung des im String enthaltenen Pfades nötig, welche die einzelnen Namensteile in diese Struktur bringt.

        Comment


        • #5
          Das funktioniert zwar aber nimmt mir ja jegliche Dynamik. Mal schauen vielleicht finde ich nen komplett anderen aber trotzdem guten Ansatz.

          Dank dir aber trotzdem vielmals!

          Comment


          • #6
            Lies mal hier weiter.

            Comment


            • #7
              Ich schau mirs mal an, danke!

              Comment

              Working...
              X