2012-01-18 47 views
3

選擇不同的價值觀,我有以下XML文件XPath來從XML文件

<people> 
<person> 
    <name>Diana B. Aust</name> 
    <address>8325 Meadow Rd</address> 
    <city>Dallas, TX</city> 
</person> 
<person> 
    <name>Diana C. Aust</name> 
    <address>8325 Meadow Rd</address> 
    <city>Dallas, TX</city> 
</person> 
<person> 
    <name>Acelia T. Peguero</name> 
    <address>59 Terry Ave</address> 
    <city>Amityville, NY</city> 
</person> 
<person> 
    <name>Acelia U. Peguero</name> 
    <address>58 Terry Ave</address> 
    <city>Amityville, NY</city> 
</person> 
</people> 

我要選擇基於獨特地址+城市組合的所有人員。我如何使用XPath查詢來做到這一點?正確的查詢應該返回節點#1,#3和#4。

+0

XSLT是一種選擇? – 2012-01-18 16:58:30

回答

1

的XPath 2.0溶液:

/*/person[not(concat(city, address)=preceding-sibling::*/concat(city, address))] 

的XSLT 1.0 Muenchian法溶液(僅供參考):

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output omit-xml-declaration="yes" indent="yes"/> 
    <xsl:strip-space elements="*"/> 
    <xsl:key name="byAddressAndCity" match="person" 
      use="concat(address, '|', city)"/> 
    <xsl:template match="/"> 
     <xsl:copy-of 
      select="*/person[generate-id()=generate-id(
       key('byAddressAndCity', concat(address, '|', city))[1])]"/> 
    </xsl:template> 
</xsl:stylesheet>