2012-06-30 10 views
5

So übergeben Sie Variablen zwischen zwei Vorlagen in XSLT.So übergeben Sie Variablen zwischen zwei Vorlagen in XSLT

Ich kann keine globale Variable verwenden, da der Wert der Variablen vom aktuellen Knoten abhängt, der ausgewertet wird.

Say I XSLT von Art haben:

<xsl:template match="product"> 
<xsl:variable name="pr-pos" select="count(./preceding-sibling::product)+1"/> 
.. 
.. 
.. 
<xsl:apply-templates select="countries/country"/> 
</xsl:template> 

<xsl:template match="countries/country"> 
<tr id="country-id"> 
    <td><a href="#" class="action" id="{concat('a-',$pr-pos)}">+</a></td> 
.. 
.. 

Dies gibt Fehler wie $ pr-po nicht zugänglich in der zweiten Vorlage ist.

Wie übergebe ich variable pr-pos 'Wert zu anderen Vorlage? Wie kann ich das machen?

+0

In Ihrem Fall müssen Sie nicht wirklich eine Variable übergeben. Der Wert von $ pr-pos, den Sie übergeben möchten, ist innerhalb der Ländervorlage ersichtlich. – Utkanos

+0

Alle Programmiersprachen (naja, die meisten) haben eine Möglichkeit, Informationen an eine andere Ausführungseinheit weiterzugeben, und das zu lernen, ist eine der Grundlagen. Diese Frage entspricht in etwa der Frage, wie ich Variablen zwischen zwei Funktionen in JavaScript übergeben oder sagen kann "Ich habe versucht" function a() {var i = 5; b();} function b() {alert (i); } 'aber' i' ist in der zweiten Funktion nicht zugänglich. " –

+0

@torazaburo: Ich konnte keinen nützlichen, der mir erklärt, wie man das auf Google macht. Ich habe es nicht gewusst, deshalb gefragt, wenn du Probleme mit Leuten hast, die Fragen stellen, warum deaktivierst du nicht dein Konto bei StackOverflow. Suchen Sie Google und sagen Sie mir, dass Sie ein gutes Dokument in dieser anderen als w3 Dokumentation finden. – Harshdeep

Antwort

10
<xsl:template match="product"> 
    <xsl:variable name="pr-pos" select="count(./preceding-sibling::product)+1"/> 
    .. 
    .. 
    .. 
    <xsl:apply-templates select="countries/country"> 
     <xsl:with-param name="pr-pos" select="$pr-pos" /> 
    </xsl:apply-templates> 
</xsl:template> 

<xsl:template match="countries/country"> 
    <xsl:param name="pr-pos" /> 
    <tr id="country-id"> 
     <td><a href="#" class="action" id="{concat('a-',$pr-pos)}">+</a></td> 
     .. 
     .. 
+0

Ich suchte etwas mehr und tat genau das gleiche, bevor ich nach der Antwort auf StackOverflow suchte, und es funktionierte. Dann auch danke für deine Hilfe :) – Harshdeep

Verwandte Themen