WaX: MSXSL Parameteraufruf

Hallo zusammen,

ich habe ein Problem mit dem MSXSL-Prozessor.
Also, dass Kommandozeilen Tool msxsl.exe funktioniert soweit ganz gut bei mir. Nun möchte ich an den verwendeten XSLT Stylesheet aber gerne einen globalen Paramter übergeben. Also einen, der im Stylesheet über "<xsl:param name="Test"/>" definiert ist.

Weiß jemand ob das mit dem msxsl.exe möglich ist?
Wenn man sich die Hilfe Funktion anschaut steht da etwas von "[param=value]". Ich weiß nicht ob Microsoft damit solche Paramter gemeint hat wie ich sie meine. :)

Wäre schön von euch zu hören.......
ciao

  1. Hallo,

    Weiß jemand ob das mit dem msxsl.exe möglich ist?
    Wenn man sich die Hilfe Funktion anschaut steht da etwas von "[param=value]". Ich weiß nicht ob Microsoft damit solche Paramter gemeint hat wie ich sie meine. :)

    Ja, verwende diese Aufrufsyntax:

    msxsl datei.xml datei.xsl -o datei.out a=123 b=abc c='abc xyz'

    Die Parameterwerte werden als Zeichenketten interpretiert, sofern Leerzeichen vorkommen (hier beim Parameter c) sind Leerzeichen noetig.

    Im Stylesheet wird bezogen auf den genannten Aufruf definiert:

      
    <xsl:param name="a"/>  
    <xsl:param name="b"/>  
    <xsl:param name="c"/>
    

    Ein moeglicher Zugriff im Stylesheet waere:

      
    <xsl:value-of select="$a"/>  
    <xsl:value-of select="$b"/>  
    <xsl:value-of select="$c"/>
    

    MfG, Thomas

    1. Die Parameterwerte werden als Zeichenketten interpretiert, sofern Leerzeichen vorkommen (hier beim Parameter c) sind Leerzeichen noetig.

      ... sind Anfuehrungszeichen noetig.

      MfG, Thomas

      1. Vielen Dank schonmal für die Antwort.
        Bei mir funktioniert deine Vorgehensweise leider anscheinend nur mit lokalen Paramtern.
        Falls ich aber einen globalen Parameter übergeben will meckert msxsl mit folgender Zeile:

        "Reference to variable or parameter 'selectedNodes' must evaluate to a node list"

        Also zur Erklärung: in meinem Stylesheet gibt es einen globalen Parameter namens "selectedNodes" der (da er global ist) direkt nach dem xsl:stylesheet-Tag definiert wird.

        Beispiel:
        <xsl:stylesheet version="1.0">
          <xsl:param name="selectedNodes"/>
        .........
        </xsl:stylesheet>

        Dies ist natürlich nur ein kurzer Auszug zur Veranschaulichung.
        Ich hoffe dochmal das es mit msxsl.exe möglich ist auch globale Parameter zu übergeben. :(

        1. Hallo,

          Bei mir funktioniert deine Vorgehensweise leider anscheinend nur mit lokalen Paramtern.

          Ich habe es vor dem Posten getestet und die Parameter auf Root-Level des Stylesheets, also vor den Templates, angegeben.

          Beispiel:
          <xsl:stylesheet version="1.0">
            <xsl:param name="selectedNodes"/>
          .........
          </xsl:stylesheet>

          Das zeigt aber nicht, wo und wie der Parameter verwendet wird.

          MfG, Thomas

          1. Also der Parameter "selectedNodes" wird immer zur Variablen Definition verwendet.

            So zum Beispiel:

            <xsl:variable name="belongs" select="count($selectedNodes|.)-count($selectedNodes)"/>

            Hat die Verwendung bestimmte Auswirkungen? Ich bin noch ein wenig unsicher auf diesem Gebiet. :)

            MfG Markus

            1. Hallo,

              Also der Parameter "selectedNodes" wird immer zur Variablen Definition verwendet.

              So zum Beispiel:

              <xsl:variable name="belongs" select="count($selectedNodes|.)-count($selectedNodes)"/>

              Die Funktion count() erwartet ein Knotenset, welches ueber einen XPath-Ausdruck gebildet wird, jedoch keine (Parameter-)Zeichenkette.

              MfG, Thomas

              1. Hallo,

                Also der Parameter "selectedNodes" wird immer zur Variablen Definition verwendet.

                So zum Beispiel:

                <xsl:variable name="belongs" select="count($selectedNodes|.)-count($selectedNodes)"/>

                Die Funktion count() erwartet ein Knotenset, welches ueber einen XPath-Ausdruck gebildet wird, jedoch keine (Parameter-)Zeichenkette.

                Falls ich bei dem Paramter "selectedNodes" per Hand schon eine Vrogabe eintrage wie z.B.

                <xsl:param name="selectedNodes" select="/liste/person"/>

                funktioniert alles. Also dachte ich mir, dass an die 'select="...."' Stelle doch einfach auch ein String übergeben werden kann, weil es für mich so scheint als würde ich ja per Hand nichts anderes machen. Ist wohl falsch ne? :)

                Könnte ich vielleicht einfach den String (/liste/person) übergeben für eine Variable (<xsl:variable name="test"/>) und diese Variable dann nutzen um bei <xsl:param name="selectedNodes" select="{$test}/> darauf zu verweisen um so vor der count()-Funktion ein Knotenset aufzubauen?

                Oh man, ich dachte es wäre einfach :)

                MfG Markus

                1. Hallo,

                  Könnte ich vielleicht einfach den String (/liste/person) übergeben für eine Variable (<xsl:variable name="test"/>) und diese Variable dann nutzen um bei <xsl:param name="selectedNodes" select="{$test}/> darauf zu verweisen um so vor der count()-Funktion ein Knotenset aufzubauen?

                    
                  <xsl:value-of select="count($selectedNodes)"/>
                  

                  mit

                    
                  <xsl:variable name="test" select="/liste/person"/>  
                  <xsl:param name="selectedNodes" select="$test"/>
                  

                  oder auch

                    
                  <xsl:param name="test" select="/liste/person"/>  
                  <xsl:param name="selectedNodes" select="$test"/>
                  

                  sollte funktionieren, aber eben nicht, wenn der Parameter als String von außen kommt, also implizit als select="'/liste/person'".

                  MfG, Thomas