使用XSLT选择特定的xml记录
下面是我的xml节点的一个示例。我想获取带有最新价格日期的活动价格记录(状态代码=活动)。 我怎样才能做到这一点使用XSLT选择特定的xml记录,xslt,Xslt,下面是我的xml节点的一个示例。我想获取带有最新价格日期的活动价格记录(状态代码=活动)。 我怎样才能做到这一点 <price_record> <price>18.99</price> <price_date>20060724</price_date> <price_status_code>Active</price_status_code>
<price_record>
<price>18.99</price>
<price_date>20060724</price_date>
<price_status_code>Active</price_status_code>
<seq_num>1</seq_num>
</price_record>
<price_record>
<price>25.99</price>
<price_date>20080725</price_date>
<price_status_code>InActive</price_status_code>
<seq_num>2</seq_num>
</price_record>
<price_record>
<price>18.99</price>
<price_date>20060928</price_date>
<price_status_code>Active</price_status_code>
<seq_num>3</seq_num>
</price_record>
18.99
20060724
忙碌的
1.
25.99
20080725
不活跃的
2.
18.99
20060928
忙碌的
3.
您缺少根元素。下面的xslt使用“catalog”作为根元素,您可以更改它。输出是唯一符合条件的记录
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*" />
</xsl:copy>
</xsl:template>
<xsl:template match="catalog">
<xsl:for-each select="price_record[price_status_code = 'Active']" >
<xsl:sort select = "price_date" order="descending" />
<xsl:if test="position() = 1" >
<xsl:copy-of select = "." />
</xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
排序应该只在“价格日期”而不是“价格记录/价格日期”。此外,您还需要指定“降序”的顺序,否则它将是最早的日期,而不是最晚的日期。上面已编辑。谢谢你的观察。为什么你需要身份转换模板呢?我只是添加了它,以防他的xml不仅仅是价格记录。你认为这是误导吗?我认为它没有任何作用,因此它是多余的