xsl-list
[Top] [All Lists]

Re: [xsl] How to find out if Xml contains two or more equal element name value with xsl?

2016-09-07 04:57:24
Or using a key, although reducing the result to a single instance is a bit 
cumbersome…

<?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" indent="yes" omit-xml-declaration="no"/>
    <xsl:strip-space elements="*"/>

    <xsl:key name="contact-by-nid" match="Contact" use="Nid" />

    <xsl:template match="Contact">
        <xsl:variable name="matching-contacts" select="key('contact-by-nid', 
Nid)"/>
        <xsl:if test="count($matching-contacts) &gt; 1
                and $matching-contacts[1] is .">
        <xsl:copy-of select="Nid"/>
        </xsl:if>
    </xsl:template>

</xsl:stylesheet>

- Michael


Am 07.09.2016 um 11:44 schrieb Rahul Singh 
rahulsinghindia15(_at_)gmail(_dot_)com 
<xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com>:

Hi,

I have only one XML. and there <Nid> contains same data like 000817441. I 
want to throw an email for same data.

How to find out if Xml contains two or more equal element name value with 
xsl? But my code is not responding

Below is XML:

<?xml version="1.0" encoding="UTF-8"?>
<objects>
  <Contact>
    <Id>003j000001Cj6l8AAB</Id>
    <Nid>000817441</Nid>
  </Contact>
  <Contact>
    <Id>007j000001Cj6l8AAB</Id>
    <Nid>000817441</Nid>
  </Contact>
  <Contact>
    <Id>003j700001Cj6l9AAB</Id>
    <Nid>001191237</Nid>
  </Contact>
  <Contact>
    <Id>003j000801Cj6lAAAR</Id>
    <Nid>010978087</Nid>
  </Contact>
  <Contact>
    <Id>003j000001Cj9l8AAB</Id>
    <Nid>000817441</Nid>
  </Contact>
</objects>


Below in XSL:

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform 
<http://www.w3.org/1999/XSL/Transform>">
    <xsl:output method="xml" indent="yes" omit-xml-declaration="no"/>
    <xsl:strip-space elements="*"/>
    <xsl:template match="objects">
        <xsl:if
            test="boolean(//objects/Contact[./Nid &gt; 
preceding-sibling::node() or ./Nid &gt; following-sibling::Nid])">
            <Nid>
                <xsl:value-of select="Nid"/>
            </Nid>
        </xsl:if>
    </xsl:template>
</xsl:stylesheet>

Expected output:

<Nid>000817441</Nid>

--~----------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/1167547
or by email: xsl-list-unsub(_at_)lists(_dot_)mulberrytech(_dot_)com
--~--

Attachment: signature.asc
Description: Message signed with OpenPGP using GPGMail

<Prev in Thread] Current Thread [Next in Thread>