2010-07-16 3 views
0
<xsl:variable name="id"> 
    <idNum>0607V45621014F</idNum> 
</xsl:variable> 

<xsl:variable name="pathId" select="Orders/Order[ORD_Num='$id/idNum']"/> 

.... pas sélectionner le IDNUMPuis-je insérer une variable dans une autre variable dans Xsl?

un other..not ..

<xsl:variable name="XmlFile" select="YG.xml"/> 
<xsl:value-of select="document($XmlFile)/aziende/azienda/ragione_sociale"/> 

ou autre ... non ..

<xsl:variable name="tagName" select="aziende"/> 
<xsl:value-of select="document($XmlFile)/$tagName/azienda/ragione_sociale"/> 
+3

S'il vous plaît reformater votre question. Écrire des trucs comme "aidez-moi!", "Merci", etc repousseront les gens à répondre. Utilisez des phrases complètes. Décrivez l'entrée et la sortie désirées, comme "J'ai la variable x = 'ab', y = 'c', je veux z = 'abc'". Je ne peux pas faire une différence significative dans les deux derniers exemples. – phihag

Répondre

3

1)

<xsl:variable name="pathId" select="Orders/Order[ORD_Num='$id/idNum']"/> 

Vous dites: An Order élément ayant au moins un ORD_Num enfant avec une valeur de chaîne égale à '$id/idNum'.

Remplacer par:

<xsl:variable name="pathId" select="Orders/Order[ORD_Num=$id]"/> 

Parce que la valeur de chaîne de la variable $ id (un arbre résultat Fragment que vous définissez) est 0607V45621014F.

Remarque: Il serait préférable que vous définissiez $ id comme une chaîne comme select="'0607V45621014F'". En outre, vous ne pouvez pas (dans XSLT 1.0) faire: [ORD_Num=$id/idNum] car l'opérateur / ne peut pas s'appliquer à un RTF.

2)

<xsl:variable name="XmlFile" select="YG.xml"/> 
<xsl:value-of select="document($XmlFile)/aziende/azienda/ragione_sociale"/> 

Ici, vous dites: Soit $ xmlFile un ensemble de noeuds avec tous YG.xml éléments Childs du noeud contextuel, etc.

Remplacer (si vous voulez un document relatif uri YG.xml)

<xsl:variable name="XmlFile" select="'YG.xml'"/> 

note: cela ne Trought pas une erreur car document() est très polyvalent (ce sont les quelques ceux qui t Ake un object comme param)

3)

<xsl:variable name="tagName" select="aziende"/>        
<xsl:value-of select="document($XmlFile)/$tagName/azienda/ragione_sociale"/> 

Cela ne fonctionne pas parce que le droit expresion de / doit être un chemin (XSLT 2.0 peut être une fonction aussi bien).

Remplacer par:

<xsl:variable name="tagName" select="document($XmlFile)/aziende"/>        
<xsl:value-of select="$tagName/azienda/ragione_sociale"/> 

Ou

<xsl:variable name="tagName" select="'aziende'"/>        
<xsl:value-of select="document($XmlFile)/*[name()=$tagName]/azienda/ragione_sociale"/> 
Questions connexes