xsl-list
[Top] [All Lists]

[xsl] removing nodes to parent based on all child nodes not having text value

2008-12-03 16:23:02
I am new to XSLT and I am trying to clean up an XML file built from a mainframe 
generated text file that contains all possible elements for all nodes. In the 
new XML I only need to copy the nodes that actually have elements that have 
text values. Is there a way to test the deepest child of an element for text 
value and then copy all it's ancestors back to the root? For example, in the 
attached input under the element <Entity> only <Individual> or <Business> 
should exist and not both. If any child elements have text value for the 
element <Individual> all child nodes should be copied, while the <Business> 
element and all it's child nodes should not be copied to the new XML file. See 
example input and output files.
 
Input
 

<Registration>
 <UserName>DID1901</UserName>
 <ActivityType>25</ActivityType>
 <ActivityDate>2008-10-30T12:10:26</ActivityDate>
 <RegistrationCounty>19</RegistrationCounty>
 <Registrants>
  <Registrant>
   <Entity>
    <Individual>
     <Prefix/>
     <FirstName></FirstName>/>
     <LastName></LastName>/>
     <Middle/>
     <Suffix/>
    </Individual>
    <Business>
     <MailingAddress>
      <Address>
       <MailingAddressType/>
       <MailingAddressLine1>123 Street</MailingAddressLine1>
       <MailingAddressLine2/>
      </Address>
     </MailingAddress>
    </Business>
   </Entity>
  </Registrant>
 </Registrants>
</Registration>
 
 
 
Output
 

<Registration>
 <UserName>DID1901</UserName>
 <ActivityType>25</ActivityType>
 <ActivityDate>2008-10-30T12:10:26</ActivityDate>
 <RegistrationCounty>19</RegistrationCounty>
  <Registrants>
  <Registrant>
   <Entity>
    <Individual>
     <Prefix/>
     <FirstName>Joe</FirstName>/>
     <LastName>Doe</LastName>/>
     <Middle/>
     <Suffix/>
    </Individual>
   </Entity>
  </Registrant>
 </Registrants>
</Registration>


--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--