ulli: Variablenübergabe

hallo

ich hab da mal nen problem. ich möchte zwecks farbiger unterlegung eine variable in einem <xsl:call-template ... > mitgeben. mein ansatz sieht folgendermaßen aus:

<xsl:if test="position() mod 2 = 1">
  <xsl:variable name="BGColor" select="'ffffff'" />
</xsl:if>
<xsl:if test="position() mod 2 = 0">
  <xsl:variable name="BGColor" select="'e2ecef'" />
</xsl:if>

<xsl:call-template name="HoteleintragErzeugen">
  <xsl:with-param name="BGColor" select="$BGColor" />
  .
  .
  . noch ein paar ander parameter  (funktionieren aber alle)
</xsl:call-template>

das ganze ist ein einer "schleife" (<xsl:for-each ... >) untergebracht. aber es geht nicht (heul) ... was ist dabei nicht verstehe, ist warum klappt das im selfhtml beispiel?
http://selfhtml.teamone.de/xml/darstellung/xsltelemente.htm#with_param

cu
ulli

  1. so, geht doch =)

    anscheinend kommt mein (der?) xsl parser nicht mit mehrfach deklatationen klar.
    ich hab mich also an das beispiel in selfhtml
    http://selfhtml.teamone.de/xml/darstellung/xsltelemente.htm#with_param
    gehalten und folgende lösung gefunden:
    <xsl:variable name="BGColor">
      xsl:choose
        <xsl:when test="position() mod 2 = 1">ffffff</xsl:when>
        <xsl:when test="position() mod 2 = 0">e2ecef</xsl:when>
        xsl:otherwiseffffff</xsl:otherwise>
       </xsl:choose>
    </xsl:variable>
    <xsl:call-template name="HoteleintragErzeugen">
      <xsl:with-param name="BGColor" select="$BGColor" />
      .
      .
      .
    </xsl:call-template>

    cu
    ulli

  2. Hallo,

    <xsl:if test="position() mod 2 = 1">
      <xsl:variable name="BGColor" select="'ffffff'" />
    </xsl:if>
    <xsl:if test="position() mod 2 = 0">
      <xsl:variable name="BGColor" select="'e2ecef'" />
    </xsl:if>

    Dein XSL-Parser ist ganz in Ordnung. Dein Ansatz ist dagegen  falsch.
    So wie du es hier definiert hast, beendest du den Geltungsbereich deiner Variable mit </xsl:if>.
    Wenn du im Archiv nach den Stichwöter: geltungsbereich, scope, xsl, valiable suchst, findet ausführliche Erklärungen.
    Die richtige Lösung hast du mittlerweile aus SELFHTML.

    Grüße
    Thomas

    1. hallo

      So wie du es hier definiert hast, beendest du den Geltungsbereich deiner Variable mit </xsl:if>.

      siehste ... hätte ich dem xslt gar nicht zugetraut ... aber gut =)

      cu
      ulli