2010-06-22 5 views
2

Je ... ceXSLT 1.1 nodeset

<xsl:stylesheet version="1.1" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exslt="http://exslt.org/common"> 

    <xsl:variable name="data"> 
    <root> 
     <test>1000</test> 
     <test>2000</test> 
     <test>3000</test> 
    </root> 
    </xsl:variable> 

    <xsl:template match="/"> 
    <xsl:for-each select="$data/root/test"> 
     <xsl:for-each select="."/> 
    </xsl:for-each> 
    </xsl:template> 
</xsl:stylesheet> 

Et je pensais qu'avec XSLT 1.1 que la variable de données $ serait traité comme un nodeset et ce genre de choses XSLT donc standard - comme pour-chaque - devrait marcher.

Je n'obtiens pas d'erreur, mais je n'ai pas de sortie - c'est comme si le jeu de nœuds $ data était complètement vide.

J'ai aussi essayé cette

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exslt="http://exslt.org/common"> 

     <xsl:variable name="data"> 
     <root> 
      <test>1000</test> 
      <test>2000</test> 
      <test>3000</test> 
     </root> 
     </xsl:variable> 

     <xsl:template match="/"> 
     <xsl:for-each select="exslt:node-set($data)/root/test"> 
      <xsl:for-each select="."/> 
     </xsl:for-each> 
     </xsl:template> 

</xsl:stylesheet> 

Avec les mêmes résultats. (En fait, j'ai déjà fait ça sans problème) J'utilise Saxon.

Qu'est-ce qui me manque? (Je ne suis pas en mesure d'utiliser XSLT 2.0 par la voie)

Merci

Répondre

1

Vous avez écrit:

je ne suis pas une erreur, mais je reçois pas de sortie

Le problème est ici:

<xsl:for-each select="."/> 

Votre question:

Que manque-t-il?

Réponse: Vous avez oublié votre modèle.

0
<xsl:template match="/"> 
    <xsl:for-each select="exslt:node-set($data)/root/test"> 

    <xsl:for-each select="."/> 
    </xsl:for-each>  </xsl:template> 

L'erreur est dans l'instruction suivante (vide):

<xsl:for-each select="."/> 

Ce (probablement) doit être:

<xsl:value-of select="."/>

ou

<xsl:copy-of select="."/>

ou ...?