我有XSL:
<html xsl:version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml">
<body>
<table>
<tr>
<td><b>Song</b></td>
<td><b>Track</b></td>
</tr>
<xsl:for-each select="results/result[Artist='Michael Jackson']">
<tr>
<td><xsl:value-of select="Song"/></td>
<td><xsl:value-of select="Track"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
和源XML
<?xml version="1.0"?>
<results>
<result>
<Artist>
Michael Jackson
</Artist>
<Song>
Beat it
</Song>
<Track>
2
</Track>
</result>
</results>
结果没有行,我期望看到一个包含结果的表,其中Michael Jackson是艺术家。
我已经做了一些测试,我认为源中的缩进或空白空间妨碍了选择。
当我使用source…
<?xml version="1.0"?>
<results>
<result>
<Artist>Michael Jackson</Artist>
<Song>Beat it </Song>
<Track>2 </Track>
</result>
</results>
。
不幸的是,我无法控制源格式。我觉得一定有一个简单的答案,因为很多XML都是这样缩进的。
是否有一个修剪功能或通配符,我可以用它来使[]选择/过滤工作?
多谢
使用normalize-space()
函数:
<xsl:for-each select="results/result[normalize-space(Artist)='Michael Jackson']">