Announcement

Collapse
No announcement yet.

Replace Funktion in XSL

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

  • Replace Funktion in XSL

    Hallo Zusammen,

    Ich bin noch relativ neu in XSL, aber doch schon ein wenig begeistert, da hier extrem viele wege hier immer nach Rom führen :-)
    Das Problem habe ich mittels workaround gelöst, allerdings verstehe ich nicht warum die elegante Version mit replace nicht funktioniert...

    Ich wollte mittels
    ein Komma durch ein Punkt ersetzen... dies klappte jedoch nicht :-(

    Weiß jemand wieso? Ich verwende auch XSL Version 2.0...

    --->
    Code:
    <xsl:value-of select="replace(AdjustedListPrice,',','.')"/>
    <---

    Mit einem Template klappt es ohne probleme:

    Code:
    <xsl:call-template name="string-replace-all">  
    			  <xsl:with-param name="text" select="AdjustedListPrice" />
    			  <xsl:with-param name="replace" select="','" />
    			  <xsl:with-param name="by" select="'.'" />
    		  </xsl:call-template>
    		  </AdjustedListPrice>
    Rettendes Template:
    Code:
    <xsl:template name="string-replace-all">
        <xsl:param name="text" />
        <xsl:param name="replace" />
        <xsl:param name="by" />
        <xsl:choose>
          <xsl:when test="contains($text, $replace)">
            <xsl:value-of select="substring-before($text,$replace)" />
            <xsl:value-of select="$by" />
            <xsl:call-template name="string-replace-all">
              <xsl:with-param name="text"
              select="substring-after($text,$replace)" />
              <xsl:with-param name="replace" select="$replace" />
              <xsl:with-param name="by" select="$by" />
            </xsl:call-template>
          </xsl:when>
          <xsl:otherwise>
            <xsl:value-of select="$text" />
          </xsl:otherwise>
        </xsl:choose>
      </xsl:template>
    Schöne Grüße bestes Wochenende und Dnke für jede Antwort und Hinweis...

  • #2
    Wenn der Code mit "replace" nicht so funktioniert, wie du es erwartest, was genau passiert denn? Bekommst du eine Fehlermeldung? Verwendest du einen XSLT 2.0 Prozessor wie Saxon 9, AltovaXML or XQSharp?

    Comment


    • #3
      Beachte, dass statt XSLT/XPath 2.0
      replace(AdjustedListPrice,',','.')
      auch XSLT/XPath 1.0
      translate(AdjustedListPrice, ',', '.')
      reicht. Aber so du einen XSLT 2.0 Prozessor benutzt, sollte auch replace funktionieren.

      Comment

      Working...
      X