title: How to remove Multiple tags if present
body: <p>I have an xml which may or may not produce multiple system number. It should keep only one value if system number and external ID are same.</p>
  
  <p>input : </p>
  
  <pre><code>&lt;?xml version = '1.0' encoding = 'UTF-8'?&gt;
  &lt;ns0:updatePersonCrossReference_Input xmlns:ns0="http://xmlns.oracle.com/apps/mdm/customer"&gt;
     &lt;xsdLocal3:ListOfSwiPersonPublishIO xmlns:xsdLocal3="http://www.siebel.com/xml/SwiPersonPublishIO"&gt;
        &lt;xsdLocal3:Contact&gt;
           &lt;xsdLocal3:IntegrationId&gt;0100004568&lt;/xsdLocal3:IntegrationId&gt;
           &lt;xsdLocal3:ListOfCIFContactReference&gt;
              &lt;xsdLocal3:CIFContactReference&gt;
                 &lt;xsdLocal3:SystemNumber&gt;GCIS&lt;/xsdLocal3:SystemNumber&gt;
                 &lt;xsdLocal3:SystemName&gt;GCIS&lt;/xsdLocal3:SystemName&gt;
                 &lt;xsdLocal3:ExternalId&gt;1016&lt;/xsdLocal3:ExternalId&gt;
              &lt;/xsdLocal3:CIFContactReference&gt;
              &lt;xsdLocal3:CIFContactReference&gt;
                 &lt;xsdLocal3:SystemNumber&gt;GCIS&lt;/xsdLocal3:SystemNumber&gt;
                 &lt;xsdLocal3:SystemName&gt;GCIS&lt;/xsdLocal3:SystemName&gt;
                 &lt;xsdLocal3:ExternalId&gt;1016&lt;/xsdLocal3:ExternalId&gt;
              &lt;/xsdLocal3:CIFContactReference&gt;
              &lt;xsdLocal3:CIFContactReference&gt;
                 &lt;xsdLocal3:SystemNumber&gt;HOG&lt;/xsdLocal3:SystemNumber&gt;
                 &lt;xsdLocal3:SystemName&gt;HOG&lt;/xsdLocal3:SystemName&gt;
                 &lt;xsdLocal3:ExternalId&gt;2002&lt;/xsdLocal3:ExternalId&gt;
              &lt;/xsdLocal3:CIFContactReference&gt;
              &lt;xsdLocal3:CIFContactReference&gt;
                 &lt;xsdLocal3:SystemNumber&gt;HOG&lt;/xsdLocal3:SystemNumber&gt;
                 &lt;xsdLocal3:SystemName&gt;HOG&lt;/xsdLocal3:SystemName&gt;
                 &lt;xsdLocal3:ExternalId&gt;2002&lt;/xsdLocal3:ExternalId&gt;
              &lt;/xsdLocal3:CIFContactReference&gt;
              &lt;xsdLocal3:CIFContactReference&gt;
                 &lt;xsdLocal3:SystemNumber&gt;OCR&lt;/xsdLocal3:SystemNumber&gt;
                 &lt;xsdLocal3:SystemName&gt;OCR&lt;/xsdLocal3:SystemName&gt;
                 &lt;xsdLocal3:ExternalId&gt;3003&lt;/xsdLocal3:ExternalId&gt;
              &lt;/xsdLocal3:CIFContactReference&gt;
              &lt;xsdLocal3:CIFContactReference&gt;
                 &lt;xsdLocal3:SystemNumber&gt;OCR&lt;/xsdLocal3:SystemNumber&gt;
                 &lt;xsdLocal3:SystemName&gt;OCR&lt;/xsdLocal3:SystemName&gt;
                 &lt;xsdLocal3:ExternalId&gt;3003&lt;/xsdLocal3:ExternalId&gt;
              &lt;/xsdLocal3:CIFContactReference&gt;
           &lt;/xsdLocal3:ListOfCIFContactReference&gt;
        &lt;/xsdLocal3:Contact&gt;
     &lt;/xsdLocal3:ListOfSwiPersonPublishIO&gt;
  &lt;/ns0:updatePersonCrossReference_Input&gt;
  </code></pre>
  
  <p>output should be : </p>
  
  <pre><code>&lt;?xml version = '1.0' encoding = 'UTF-8'?&gt;
  &lt;ns0:updatePersonCrossReference_Input xmlns:ns0="http://xmlns.oracle.com/apps/mdm/customer"&gt;
     &lt;xsdLocal3:ListOfSwiPersonPublishIO xmlns:xsdLocal3="http://www.siebel.com/xml/SwiPersonPublishIO"&gt;
        &lt;xsdLocal3:Contact&gt;
           &lt;xsdLocal3:IntegrationId&gt;0100004568&lt;/xsdLocal3:IntegrationId&gt;
           &lt;xsdLocal3:ListOfCIFContactReference&gt;
              &lt;xsdLocal3:CIFContactReference&gt;
                 &lt;xsdLocal3:SystemNumber&gt;GCIS&lt;/xsdLocal3:SystemNumber&gt;
                 &lt;xsdLocal3:SystemName&gt;GCIS&lt;/xsdLocal3:SystemName&gt;
                 &lt;xsdLocal3:ExternalId&gt;1016&lt;/xsdLocal3:ExternalId&gt;
              &lt;/xsdLocal3:CIFContactReference&gt;            
              &lt;xsdLocal3:CIFContactReference&gt;
                 &lt;xsdLocal3:SystemNumber&gt;HOG&lt;/xsdLocal3:SystemNumber&gt;
                 &lt;xsdLocal3:SystemName&gt;HOG&lt;/xsdLocal3:SystemName&gt;
                 &lt;xsdLocal3:ExternalId&gt;2002&lt;/xsdLocal3:ExternalId&gt;
              &lt;/xsdLocal3:CIFContactReference&gt;            
              &lt;xsdLocal3:CIFContactReference&gt;
                 &lt;xsdLocal3:SystemNumber&gt;OCR&lt;/xsdLocal3:SystemNumber&gt;
                 &lt;xsdLocal3:SystemName&gt;OCR&lt;/xsdLocal3:SystemName&gt;
                 &lt;xsdLocal3:ExternalId&gt;3003&lt;/xsdLocal3:ExternalId&gt;
              &lt;/xsdLocal3:CIFContactReference&gt;            
           &lt;/xsdLocal3:ListOfCIFContactReference&gt;
        &lt;/xsdLocal3:Contact&gt;
     &lt;/xsdLocal3:ListOfSwiPersonPublishIO&gt;
  &lt;/ns0:updatePersonCrossReference_Input&gt;
  </code></pre>
  
  <p>if input is : </p>
  
  <pre><code>&lt;?xml version = '1.0' encoding = 'UTF-8'?&gt;
  &lt;ns0:updatePersonCrossReference_Input xmlns:ns0="http://xmlns.oracle.com/apps/mdm/customer"&gt;
     &lt;xsdLocal3:ListOfSwiPersonPublishIO xmlns:xsdLocal3="http://www.siebel.com/xml/SwiPersonPublishIO"&gt;
        &lt;xsdLocal3:Contact&gt;
           &lt;xsdLocal3:IntegrationId&gt;0100004568&lt;/xsdLocal3:IntegrationId&gt;
           &lt;xsdLocal3:ListOfCIFContactReference&gt;
              &lt;xsdLocal3:CIFContactReference&gt;
                 &lt;xsdLocal3:SystemNumber&gt;GCIS&lt;/xsdLocal3:SystemNumber&gt;
                 &lt;xsdLocal3:SystemName&gt;GCIS&lt;/xsdLocal3:SystemName&gt;
                 &lt;xsdLocal3:ExternalId&gt;1016&lt;/xsdLocal3:ExternalId&gt;
              &lt;/xsdLocal3:CIFContactReference&gt;            
              &lt;xsdLocal3:CIFContactReference&gt;
                 &lt;xsdLocal3:SystemNumber&gt;HOG&lt;/xsdLocal3:SystemNumber&gt;
                 &lt;xsdLocal3:SystemName&gt;HOG&lt;/xsdLocal3:SystemName&gt;
                 &lt;xsdLocal3:ExternalId&gt;2002&lt;/xsdLocal3:ExternalId&gt;
              &lt;/xsdLocal3:CIFContactReference&gt;            
              &lt;xsdLocal3:CIFContactReference&gt;
                 &lt;xsdLocal3:SystemNumber&gt;OCR&lt;/xsdLocal3:SystemNumber&gt;
                 &lt;xsdLocal3:SystemName&gt;OCR&lt;/xsdLocal3:SystemName&gt;
                 &lt;xsdLocal3:ExternalId&gt;3003&lt;/xsdLocal3:ExternalId&gt;
              &lt;/xsdLocal3:CIFContactReference&gt;            
           &lt;/xsdLocal3:ListOfCIFContactReference&gt;
        &lt;/xsdLocal3:Contact&gt;
     &lt;/xsdLocal3:ListOfSwiPersonPublishIO&gt;
  &lt;/ns0:updatePersonCrossReference_Input&gt;
  </code></pre>
  
  <p>Then output should display the same.</p>
  
  <p>Any inputs appreciated. I am using XSL 1.0.</p>
  
  <p>Thanks,
  M S</p>