我有以下xml:
<?xml version="1.0" encoding="UTF-8"?>
<catalog>
<cd>
<title>Empire Burlesque</title>
<artist>Bob Dylan</artist>
<country>USA</country>
<company>Columbia</company>
<price>10.90</price>
<year>1985</year>
</cd>
</catalog>
要解决此查询的XSLT是:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<xsl:value-of select="catalog/cd"/>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
我在上面写了xslt代码,它正在挑选所有子标签的所有值。上述代码的答案将是:
Empire Burlesque Bob Dylan USA Columbia 10.90 1985
问题:我想要选择除了一个以外的所有子标签,让我们说我不想从子标签“价格”中获取价值。即我期待以下回答
Empire Burlesque Bob Dylan USA Columbia 1985
这个答案的“xslt 1.0”代码是什么?
答案 0 :(得分:2)
首先,您应该知道现有XSLT的实际输出是:
<html>
<body>
Empire Burlesque
Bob Dylan
USA
Columbia
10.90
1985
</body>
</html>
您展示的是浏览器如何渲染到屏幕上(所有空白字符序列都折叠到一个空格)。
要从结果中排除价格,您必须使样式表更深入一层 - 并提供您自己的分隔符。
替换:
<xsl:value-of select="catalog/cd"/>
使用:
<xsl:for-each select="catalog/cd/*[not(self::price)]">
<xsl:value-of select="."/>
<xsl:text> </xsl:text>
</xsl:for-each>
此处的结果将是:
<html>
<body>Empire Burlesque Bob Dylan USA Columbia 1985 </body>
</html>
浏览器将呈现为:
Empire Burlesque Bob Dylan USA Columbia 1985