Announcement

Collapse
No announcement yet.

String-Operationen und <xsl:apply-templates />

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

  • String-Operationen und <xsl:apply-templates />

    Hallo liebe Gemeinde,

    ich habe ein kleines Problem:
    Folgede Ausgangssituation:
    Code:
    <text>
    <absatz>4 Blindtext <b>der hier fett ist</b></absatz>
    <absatz>5 Blindtext der hier normal ist</absatz>
    </text>
    Nun habe ich eine Template-Regel für das Element <absatz> sowie <b>
    Wie schaffe ich es das ich ein neues XML-Dokument ausgebe das folgendermaßen aussieht:

    Code:
    <text>
    <absatz nr="4">Blindtext <b>der hier fett ist</b></absatz>
    <absatz nr="5">Blindtext der hier normal ist</absatz>
    </text>
    Meine Template für <absatz>:

    Code:
    <xsl:template match="absatz">
    <xsl:if test="matches(., '^[0-9]+\ ')">
    <absatz nr="{substring-before(., ' ')}"><xsl:value-of select="."/></absatz>
    </xsl:if>
    </xsl:template>
    Mit dieser Methode währe ich ja schon nah dran, aber leider steh ich gerade auf dem Schlauch, da ja mit <xsl:value-of... nur Textknoten ausgegeben werden, und das template des Elements <b> wird nicht ausgeführt.
    Wenn ich stattdessen <xsl:apply-templates nutzen würde, wird das template von <b> ausgeführt, aber die ziffer steht immer noch drin.

    Was kann ich tun?
    Vielen Dank für die Hilfe.

  • #2
    Probiere es so:
    Code:
    <xsl:template match="text">
      <text>
        <xsl:apply-templates select="absatz"/>
      </text>
    </xsl:template>
    
    
    <xsl:template match="absatz">
    
      <xsl:if test="matches(.,'^[0-9]+\s')">
        <absatz nr="{substring-before(text()[1],' ')}">
          <xsl:copy-of select="substring-after(text()[1],' ')"/>
          <xsl:apply-templates select="b"/>
        </absatz>
      </xsl:if>
        
    </xsl:template>
    
    
    <xsl:template match="b">
      <xsl:copy-of select="."/>
    </xsl:template>

    Comment


    • #3
      Hallo Thomas,

      ich bedanke mich recht herzlich bei dir.
      Ich bin gar nicht mehr darauf gekommen, das man die Textknoten ja auch mit der Positionsangabe referenzieren kann.

      Klappt alles wunderbar.

      Besten Gruß, Z-MAN

      Comment

      Working...
      X