web-dev-qa-db-fra.com

Créer un ensemble de nœuds et transmettre comme paramètre

Utilisation de XSLT 1.0, j'essaie de créer essentiellement un petit jeu de nœuds, puis de le transmettre en tant que paramètre à un modèle, comme ce qui suit:

<xsl:call-template name="widget">
  <xsl:with-param name="flags">
    <items>
      <item>widget.recent-posts.trim-length=100</item>
      <item>widget.recent-posts.how-many=3</item>
      <item>widget.recent-posts.show-excerpt</item>
    </items>
  </xsl:with-param>
</xsl:call-template>

L'idée est qu'à partir de l'intérieur du modèle widget, je pouvais écrire quelque chose comme:

<xsl:value-of select="$flags/item[1]" />

Évidemment, je reçois des erreurs de compilation .. Comment puis-je réaliser ce genre de chose?

28

Eh bien, j'ai réussi à contourner cela de la manière suivante:

Ajoutez d'abord un espace de noms personnalisé à votre feuille de style, par exemple. xmlns:myns="http://my.ns.com"

Définissez ensuite les nœudset en haut de la feuille de style:

<myns:recent-posts-flags>
    <item>widget.recent-posts.trim-length=100</item>
    <item>widget.recent-posts.how-many=3</item>
    <item>widget.recent-posts.show-excerpt</item>
</myns:recent-posts-flags>

Ensuite, référence de la manière suivante:

<xsl:call-template name="widget">
    <xsl:with-param name="flags" select="document('')/*/myns:recent-posts-flags" />
</xsl:call-template>

Cela fonctionne, mais il serait toujours idéal pour que je puisse définir le nœud défini dans le <xsl:with-param> tag elle-même, comme dans le premier exemple que j'ai donné. Tout le monde pense que ce serait possible?

6