简短问题: 我想选择所有与属性不匹配的节点(@type!='x'),但属性也不存在(??)。 目前,我什么也没收到,因为其他节点根本没有属性。
背景: 我有一些XML。请注意,其中一个具有type =“feature”,但所有其他都没有'type'attr。
<image type="feature"><description>X</description><url>media/designer_glass_tile_04.jpg</url><height></height><width/></image>
<image><description>Designer Glass 05</description><url>media/designer_glass_tile_05.jpg</url><height></height><width/></image>
<image><description>Designer Glass 06</description><url>media/designer_glass_tile_06.jpg</url><height></height><width/></image>
<image><description>Designer Glass 07</description><url>media/designer_glass_tile_07.jpg</url><height></height><width/></image>
<image><description>Designer Glass 08</description><url>media/designer_glass_tile_08.jpg</url><height></height><width/></image>
和XSL风格:
<div id="gallery">
<div id="feature" >
<xsl:apply-templates select="image[@type='feature']"/>
</div>
<div id="thumbs">
<xsl:apply-templates select="image[@type!='feature']"/>
</div>
</div>
答案 0 :(得分:67)
以下代码将选择type属性不存在的所有节点:
select="image[not(@type)]"
在代码中添加此逻辑。
答案 1 :(得分:12)
尝试在谓词中使用not()
代替!=
<div id="gallery">
<div id="feature" >
<xsl:apply-templates select="image[@type='feature']"/>
</div>
<div id="thumbs">
<xsl:apply-templates select="image[not(@type='feature')]"/>
</div>
</div>