uwe: Unterschied zwischen variable und param ?

Hallo Alle,
Was hat es mit diesen Parametern auf sich? Was ist das Besondere (Wichtige) an ihnen? Kann jemand einem Nichtprogrammierer das verstaendlich machen?
Beste Gruesse, Uwe

  1. Hallo Uwe,

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

    Hm, Besonderes ist nix an Parametern. Sie dienen in Programmiersprachen i.A. dazu die Ausführung gewisser Funktionen/Methoden/Prozesse (wie immer mann die Dinder je nach Programmiersprache nennen mag) abhängig von bestimmten Übergabewerten (eben Parameteren) zu machen (man sagt auch "parametrisieren").

    Also statt einfach lesen() zu sagen, und in die lesen-Methode reinzuschreiben, welche Datei gelesen werden soll, kannst du auch schreiben lesen(Datei x) und übergibst dann den Dateinamen. Damit wird die Methode wesentlich allgemeiner und wiederverwendbar für verschiedene Dateien.

    Im Falle von XSL-T handelt es sich in der Regel um sogenannte Template-Regeln, die beschreiben, was der XSLT-Prozessor in den Ergebnisbaum (oder vereinfacht gesagt in das Ergebnisdokument) schreiben soll. Auch diese Beschreibungen kann man eben parametrisieren.

    Gruß und schönes WE
    Franz

  2. 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