Re: [xsl] flattening an xml hierarchy

Subject: Re: [xsl] flattening an xml hierarchy
From: "Vasu Chakkera" <vasucv@xxxxxxxxx>
Date: Thu, 8 Jan 2009 20:59:09 +0000
>  <xsl:template match="Dontwant1 | dontwant2">
>
> I get the unwanted elements as well.

why do you think?

you are searching for a node that is not there in your source.
GetNextDocumentResponse in your source belongs to a namespace
"http://www.BargeEx.com/BargeExService"; so you must first define a
namespace say "bargeExns"
and use the namespace prefix to pull the nodes you want. The following
should work for you. You have to refer to a node by its namespace, if
the node in the source has a namespace associated with it.



<xsl:stylesheet version="1.0" xmlns:bargeExNs =
"http://www.BargeEx.com/BargeExService";
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
	<xsl:template match="node()|@*">
		<xsl:copy>
			<xsl:apply-templates select="node()|@*"/>
		</xsl:copy>
	</xsl:template>
	<xsl:template match = "bargeExNs:EquipmentStatusDocument">
		<xsl:apply-templates select="node()|@*"/>
	</xsl:template>
	</xsl:stylesheet>
 HTH


2009/1/8 Tim <timlhunt@xxxxxxxxxxxxxx>:
> I thought a simple example would be able for me to extrapolate to one with
> namespaces. When I run your transform with
>   <xsl:template match="GetNextDocumentResponse | GetNextDocumentResult |
> Document">
> replacing
>  <xsl:template match="Dontwant1 | dontwant2">
>
> I get the unwanted elements as well.
>
>
> I am looking to remove the top three elements of the below [accurate]
> example:
> <GetNextDocumentResponse xmlns="http://www.BargeEx.com/BargeExService";>
>   <GetNextDocumentResult>Success</GetNextDocumentResult>
>   <Document>
>       <EquipmentStatusDocument
> xmlns="urn:x12:schemas:BEX200808:StatusDocuments">
>           <DocumentHeader/>
>           <DocumentDetail>
>            ....
>           </DocumentDetail>
>           </DocumentHeader/>
>       </EquipmentStatusDocument>
>
> Thanks, again.
> Tim
>
>
> Martin Honnen wrote:
>>
>> Tim wrote:
>>
>>> I'd like to remove some elements from an xml hierachy using xslt:
>>>
>>> Original xml example:
>>> <Dontwant1>
>>>   <dontwant2>foo</dontwant2>
>>>   <x3>
>>>       <x4>stuff</x4>
>>>       <y5>more stuff</y5>
>>>   </x3>
>>> </Dontwant1>
>>>
>>> Like to have transform output:
>>> <x3>
>>>  <x4>stuff</x4>
>>>   <y5>more stuff</y5>
>>> </x3>
>>
>>  <xsl:template match="@* | node()">
>>     <xsl:copy>
>>       <xsl:apply-templates select="@* | node()"/>
>>     </xsl:copy>
>>  </xsl:template>
>>
>>  <xsl:template match="Dontwant1 | dontwant2">
>>     <xsl:apply-templates select="*"/>
>>  </xsl:template>
>
>



-- 
Vasu Chakkera
Numerical Algorithms Group Ltd.
Oxford
www.vasucv.com

Current Thread