我有这个XML:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<?xml-stylesheet href="Myxslt.xml" type="application/xml"?>
<Player>
<information id="2" >Gretzky</information>
</Player>
<Player>
<information id="3" goalie="true">Fuhr</information>
</Player>
我想只检索有信息ID且不是守门员的玩家。
这是我的“测试”不起作用
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="//*[@id|not(@goalie)]">
....
</xsl:template>
</xsl:stylesheet>
此行不起作用
<xsl:template match="//*[@id|not(@goalie)]">
就像我内心有错误一样。
它可以正常使用1个属性:
<xsl:template match="//*[@id">
或
<xsl:template match="//*[@goalie">
有人可以对此有所了解吗?
感谢
答案 0 :(得分:0)
如果您希望元素具有id 且没有goalie属性,则使用两个谓词:
<xsl:template match="*[@id][not(@goalie)]">
使用多个谓词,每个谓词都会过滤前一个列表,因此它们可以有效地“结合”在一起。
另请注意,匹配模式中不需要前导//
,因为默认情况下,模式在所有级别都匹配,除非它们是以单个/
开头的绝对路径。