Subject: Re: 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
|