簡體   English   中英

XSLT輸出不同的值

[英]XSLT output distinct values

我有這個XML:

<LocatorInfo>
 <LocationAddr>
            <StreetNum>182</StreetNum>
            <StreetName>Eastern Avenue</StreetName>
            <City>Fall River</City>
            <StateProv>MA</StateProv>
            <PostalCode>02723</PostalCode>
            <Country>USA</Country>
            <GEOCode>
                <Latitude>41.694600119635915</Latitude>
                <Longitude>-71.13038416718094</Longitude>
            </GEOCode>
        </LocationAddr>
        <LocationTimestamp>4/6/2018 4:17:37 PM</LocationTimestamp>
        <LocationDistance>4.338 miles</LocationDistance>
        <Accuracy>1.985 miles</Accuracy>
    </LocatorInfo>
<LocatorInfo>
    <LocationAddr>
      <StreetNum>285</StreetNum>
      <StreetName>Wastern Avenue</StreetName>
      <City>Ball River</City>
      <StateProv>MA</StateProv>
      <PostalCode>02723</PostalCode>
      <Country>USA</Country>
      <GEOCode>
        <Latitude>41.694600119635915</Latitude>
        <Longitude>-71.13038416718094</Longitude>
      </GEOCode>
    </LocationAddr>
    <LocationTimestamp>4/7/2018 7:00:03 AM</LocationTimestamp>
    <LocationDistance>4.338 miles</LocationDistance>
    <Accuracy>1.985 miles</Accuracy>
  </LocatorInfo>
<LocatorInfo>
    <LocationAddr>
      <StreetNum>182</StreetNum>
      <StreetName>Eastern Avenue</StreetName>
      <City>Fall River</City>
      <StateProv>MA</StateProv>
      <PostalCode>02723</PostalCode>
      <Country>USA</Country>
      <GEOCode>
        <Latitude>41.694600119635915</Latitude>
        <Longitude>-71.13038416718094</Longitude>
      </GEOCode>
    </LocationAddr>
    <LocationTimestamp>4/7/2018 7:00:03 AM</LocationTimestamp>
    <LocationDistance>4.338 miles</LocationDistance>
    <Accuracy>1.985 miles</Accuracy>
  </LocatorInfo>

我需要找到一種方法在一個段落(StreetNum,StreetName,City,StateProv)中輸入每個不同的地址,基本上只是不輸出重復項。 並計算每個地址出現的次數。

我不知道如何解決這個問題。

我相信xml spy支持XSLT 2.0及更高版本,因此您應該能夠使用xsl:for-each-group來獲得不同的分組。

試試這個XSLT

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
    <xsl:output method="xml" encoding="UTF-8" indent="yes" />

    <xsl:template match="/*">
      <Addresses>
        <xsl:for-each-group select="LocatorInfo/LocationAddr" group-by="string-join((StreetNum, StreetName, City, StateProv), '!')">
          <Address>
            <xsl:copy-of select="StreetNum, StreetName, City, StateProv" />
            <Count>
              <xsl:value-of select="count(current-group())" />
            </Count>
        </Address>
        </xsl:for-each-group>
      </Addresses>
    </xsl:template>
</xsl:stylesheet>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM