Thomas J.S.: Unterschied zwischen variable und param ?

Beitrag lesen

hallo uwe,

Was hat es mit diesen Parametern auf sich? Was ist das Besondere (Wichtige) an ihnen? Kann jemand einem Nichtprogrammierer das verstaendlich machen?

hmm viellich so:
im prinzip sind beide gleich (also du kannst Werte sowohl an paramter als auch an variable übergeben und binden), nur in der Verwendung gibts unterschiede:

parameter kannst du (z.B. in der URL)weitergeben von einem zum anderen dokument.
<xsl:param name="fname" select="''" /> (was <xsl:param name="firstname"></xsl:param> entspricht)

eine möglich URL könnte dann so aussehen:
http://blabla.de/namen/angestellte.xml?fname=fritz

und dann kannst du sie abfragen (hier ob der parameter überhaupt vorhanden ist)
      <xsl:when test="$firstname">
         <xsl:apply-templates select="person[@firstname = $fname]"/>
      </xsl:when>
      xsl:otherwiseandere xls anweisungen </xsl:otherwise>
   </xsl:choose>

---

Du kannst Variblen überall in deiner Stylesheet definieren: entweder als top-level elemente, oder irgendwo von innerhalb von templates.

parameter kannt du nur als toplevel-elemente defineren, auch innerhalb von templates, dh. wenn du paramter innerhalb von templates definierst, muss er vor allen anderen ellementen im template stehen.

du kannst templates mit parametes aufrufen (xsl:with-param
der eigentliche differenz (zwischen variable und param)ist, dass der wert eines parameters nur ein default wert ist, der nur dann eingesetzt wird, wenn keine spezielle werte dem template zugefüg werden.

beispeil dafür:
du definierst ine einem template:
<xsl:param name="farbe">blau</xsl:param>
<p><xsl:attribute name="style">color:<xsl:value-of select="$farbe" /></xsl:attribute></p>

bekommst: <p style="color:blau"></p>
--
dann rufst du diesen tempalte in einem anderen auf und mit dem paramter (dass du hier ändern kannst)
<xsl:with-param name="farbe">red</xsl:with-param>
<p><xsl:attribute name="style">color:<xsl:value-of select="$farbe" /></xsl:attribute></p>

bekommst: <p style="color:red"></p>
-----
sinn: du kannst den selben ausgabestruktrur verwenden und dabei nur den wert des paramters ändern dort wo es eine änderung gebraucht wird.

na ja... ob das dir jetzt so viel klarer ist? (ich hoffe zumindest etwas)

Grüße
Thomas