Lorsque XSLT pour-chacun est dans une boucle. Comment puis-je ajouter un attribut ou d'un nœud XML basé sur d'autres valeurs XML. À L'AIDE DE XSLT

Quelqu'un peut-il m'aider à régler ce problème?

J'ai un fichier XML et de filtrage de l'valeurs basée sur une condition. Le stockage de l'filtré xml dans une variable. Alors que le filtrage de l'état, je suis en train d'ajouter un attribut ou d'un nœud à l'filtré xml, mais il ne fonctionne pas pour moi..

XML d'entrée:

    <root>
        <a id="13">
            <b>XXX1</b>
            <c>YYY1</c>
        </a>
        <a id="2">
            <b>XXX2</b>
            <c>YYY2</c>
        </a>
        <a id="15">
            <b>XXX3</b>
            <c>YYY3</c>
        </a>
        <a id="37">
            <b>XXX4</b>
            <c>YYY4</c>
        </a>
        <a id="51">
            <b>XXX5</b>
            <c>YYY5</c>
        </a>
    </root>

Un autre XML, qui est stocké dans une variable appelée "data" (c'est pour le filtrage):

<sample>
    <con id="37" order="1"/>
    <con id="13" order="2"/>
    <con id="51" order="3"/>
    <con id="2" order="4"/>
    <con id="15" order="5"/>
</sample>

À l'aide de XSLT, je suis en train de filtre & ajouter un élément de cette façon.

<xsl:variable name="filteredData">
    <newroot>
      <xsl:for-each select="/root/a[@id > 14]">
        <xsl:if test="msxsl:node-set($data)/sample/con[@id = current()/@id]/@id = current()/@id">
          <xsl:element name="order">
            <xsl:value-of select="msxsl:node-set($data)/sample/con[@id = current()/@id]/@order"/>
          </xsl:element>
        </xsl:if>
      </xsl:for-each>
    </newroot>
</xsl:variable>

XML en SORTIE (c'est à dire, "filteredData" variable doit contenir code XML ci-dessous):

     <newroot>
        <a id="15">
            <b>XXX3</b>
            <c>YYY3</c>
            <order>5</order>
        </a>
        <a id="37">
            <b>XXX4</b>
            <c>YYY4</c>
            <order>1</order>
        </a>
        <a id="51">
            <b>XXX5</b>
            <c>YYY5</c>
            <order>3</order>
        </a>
    </newroot>

OriginalL'auteur Siva Charan | 2011-04-25