如何在xsl中为每个人做?我得到了每个元素,但我真的很感激dept示例。
答案 0 :(得分:0)
您需要将<xsl:for-each select= "database/sims/sim[simID = $callsimID]">
更改为<xsl:for-each select= "/database/sims/sim[simID = $callsimID]">
,以确保从文档节点sim
中选择/
元素。
我会定义一个键<xsl:key name="sim" match="sims/sim" use="simID"/>
并使用<xsl:for-each select="key('sim', $callsimID)">
,这应该更有效。
答案 1 :(得分:0)
这非常简单,您根本不需要<xsl:for-each>
。另外,你真的应该模块化你的样式表。
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<html>
<head>
<title>Customers</title>
</head>
<body>
<xsl:apply-templates select="database" />
</body>
</html>
</xsl:template>
<xsl:template match="database">
<table rules="all">
<caption>Customers</caption>
<xsl:apply-templates select="
sims/sim[
simID = current()/calls/call[
countryCodeOfOtherParty = '49'
and areaCodeOfOtherParty = '31'
and numberCodeOfOtherParty ='124567'
]/simID
]
" />
</table>
</xsl:template>
<xsl:template match="sim">
<tr>
<td><xsl:value-of select="customerID" /></td>
</tr>
</xsl:template>
</xsl:stylesheet>
,其中
sims/sim[
simID = current()/calls/call[
countryCodeOfOtherParty = '49'
and areaCodeOfOtherParty = '31'
and numberCodeOfOtherParty ='124567'
]/simID
]
毫不奇怪地意味着“每个可以调用该特定号码的SIM卡”。请注意使用current()
函数在XPath中引用<database>
。
您可以使用<xsl:key>
来提高效果,但最后只有在您的<database>
非常大并且样式表变得迟钝时才有必要。