我想使用foreach select = commands / command
从每个主菜获取签名<root>
<commandes>
<commande date="2012-12-05" numero="c1001">
<entree ref="p1012732NC" prix="39.98" quantite="2" />
<entree ref="p2203633" prix="149" quantite="1" />
<entree ref="p2103625E" prix="249" quantite="1" />
<entree ref="p3317" prix="325" quantite="2" />
</commande>
<commande date="2012-12-06" numero="c1002">
<entree ref="p22651-02" prix="99.99" quantite="3" />
<entree ref="p2212807DE" prix="79.98" quantite="2" />
<entree ref="p5418151" prix="129" quantite="1" />
</commande>
</commandes>
<produits>
<produit type="chemise" promo="no">
<reference>p1012732NC</reference>
<signation>CHEMISE MARCO FERRERA</signation>
<prixNormal>39.98</prixNormal>
<prixPromo/>
<image>w10-1012732nc-tq.jpg</image>
</produit>
</produits>
</root>
MY XSL:
<xsl:template match="/catalogue">
<xsl:for-each select="commandes/commande">
<xsl:value-of select="idref(@ref)"/>
</xsl:for-each>
</xsl:template>
我怎么能用xsl做到这一点?
答案 0 :(得分:1)
您可能希望在此处阅读 xsl:key ,因为您可以使用它来查找其他节点的值。看起来您希望根据参考查找 produit 元素。在这种情况下,您可以像这样定义一个键:
<xsl:key name="idref" match="produit" use="reference" />
然后将其称为特定参考,您可以这样做
<xsl:value-of select="key('idref', 'p1012732NC')" />
这将返回 produit 元素。如果您想要签名值,则可以执行此操作
<xsl:value-of select="key('idref', 'p1012732NC')/signation" />
通常,您可以使用现有元素或属性的值来调用它。在您的情况下,您可以使用 entree 元素上的 ref 属性。因此,您的代码将如下所示:
<xsl:for-each select="commandes/commande/entree">
<xsl:value-of select="key('idref', @ref)/signation"/>
</xsl:for-each>