使用参数的XSL选择具有任何属性值的节点

时间:2013-06-27 10:09:28

标签: xslt

我有以下xsl。

<xsl:param name="ip"/>

<xsl:for-each select="log/event[@ip=$ip]">
<!--content-->
</xsl:for-each>

我正在传递ip参数。在某些情况下,我需要选择每个log/event,而不是ip。例如,我想传递ip="*",在这种情况下,我想选择所有log/event个节点。我怎样才能做到这一点?感谢

2 个答案:

答案 0 :(得分:4)

<xsl:for-each select="log/event[$ip = '*' or @ip = $ip]">...</xsl:for-each>应该这样做。只需确保星号*不是ip属性可以包含的值之一。

答案 1 :(得分:0)

如果您不关心该属性,请使用:

<xsl:param name="ip"/>
  <xsl:for-each select="log/event">
  <!--content-->
  </xsl:for-each>

如果您不关心ip属性的值,但您只想选择至少具有ip属性的节点:

<xsl:param name="ip"/>
  <xsl:for-each select="log/event[@ip]">
  <!--content-->
  </xsl:for-each>