我有一个重复相同信息的xml文件,并希望使用xslt来获取第一个实例并忽略其余部分。以下是XML文件的样子:
<?xml version='1.0' encoding='UTF-8'?>
<Report_Data>
<Report_Entry>
<Cust_Name>Test 1</Cust_Name>
<Cust_ID>Cust_ID_1</Cust_ID>
</Report_Entry>
<Report_Entry>
<Cust_Name>Test 1</Cust_Name>
<Cust_ID>Cust_ID_2</Cust_ID>
</Report_Entry>
<Report_Entry>
<Cust_Name>Test 1</Cust_Name>
<Cust_ID>Cust_ID_3</Cust_ID>
</Report_Entry>
</Report_Data>
如果您想知道为什么会有重复的条目,那是因为数据库中有重复的条目,而xml文件会抓取所有这些条目。
在我的xslt:
中<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:fn="http://www.w3.org/2005/xpath-functions"
exclude-result-prefixes="fn wd xs xsl">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<root>
<output_id>
<xsl:value-of select="/Report_Data/Report_Entry/Cust_ID"></xsl:value-of>
</output_id>
</root>
</xsl:template>
</xsl:stylesheet>
结果是:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<output_id>Cust_ID_1 Cust_ID_2 Cust_ID_3</output_id>
</root>
我想知道是否有一个函数可以抓住它遇到的第一个元素值,如<xsl:value-of select="/Report_Data/Report_Entry/Cust_ID[0]"></xsl:value-of>
我总是可以在使用空格作为分隔符的方法之前使用子字符串,但我想知道是否有更好的方法。
答案 0 :(得分:1)
尝试更改此部分:
<output_id>
<xsl:value-of select="/Report_Data/Report_Entry/Cust_ID"></xsl:value-of>
</output_id>
为:
<output_id>
<xsl:value-of select="/Report_Data/Report_Entry[1]/Cust_ID" />
</output_id>
对于协议,我们在此假设报告只包含一个“真实”条目。