|
Subject: [xsl] Transform all tags into attributes with some tags omitted From: "Philipp Kursawe" <phil.kursawe@xxxxxxxxx> Date: Fri, 16 May 2008 08:46:50 +0200 |
Hi all!
I need to transform this rather verbose XML Output into a smaller more
compact, attribute based form. Also I do not need all tags, but wanna
be sure that, if in future a new CHECKDIGIT4 field will be added that
my XSLT is still transforming this new tag. I can use XSLT 2.0 or 1.0.
I have marked the fields I do not need from the source XML. Find below
the expected XML output.
<OUTPUT>
<ES_HEAD>
<TANUM>0000057779</TANUM>
<QTY_LINES>0005</QTY_LINES>
<WEIGHT>43.879</WEIGHT>
<GEWEI>KG</GEWEI> <!-- NOT NEEDED -->
<VOLUME>0</VOLUME>
<VOLEH></VOLEH> <!-- NOT NEEDED -->
<INUSE></INUSE>
</ES_HEAD>
<ET_ITEMS>
<item>
<TAPOS>0001</TAPOS>
<LGPLA>01 02 0</LGPLA>
<CORRIDOR>01</CORRIDOR> <!-- NOT NEEDED -->
<PLATZ> 02 0</PLATZ> <!-- NOT NEEDED -->
<MATERIAL>1993924600</MATERIAL>
<MATKTXT></MATKTXT>
<CHECKDIGIT>902</CHECKDIGIT>
<CHECKDIGIT2>600</CHECKDIGIT2>
<CHECKDIGIT3></CHECKDIGIT3>
<VSOLM>9.000</VSOLM>
<MEINS>ST</MEINS> <!-- NOT NEEDED -->
<PACKGROESSE>0</PACKGROESSE>
</item>
...more <item/>
</ET_ITEMS>
</OUTPUT>
The expected output should be looking like this:
<OUTPUT>
<ES_HEAD tanum="0000057779" qty_lines="0005" ../>
<ES_ITEMS>
<item tapos="0001" lgpla="01 02 0" ... />
<item tapos="0002" lgpla="02 04 0" ... />
</ES_ITEMS>
</OUTPUT>
I have created this XSTL:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" >
<xsl:output method="xml"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()" />
</xsl:copy>
</xsl:template>
<xsl:template match="item">
<xsl:copy>
<xsl:for-each select="TAPOS|LGPLA|MATERIAL|MATKTXT|CHECKDIGIT|CHECKDIGIT2|CHECKDIGIT3|VSOLM|MEINS|PACKGROESSE"><xsl:call-template
name="item-element" /></xsl:for-each>
</xsl:copy>
</xsl:template>
<xsl:template name="item-element">
<xsl:attribute name="{name()}" ><xsl:value-of select="." /> </xsl:attribute>
</xsl:template>
</xsl:stylesheet>
However I do not like the select statement for the tags. I would
rather like to describe the exceptions so that tag added in the future
are automatically added as attributes without changing the xslt.
Thanks in advance,
Phil
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] AJAX question: Using <xsl, M. David Peterson | Thread | Re: [xsl] Transform all tags into a, Michael Ludwig |
| Re: [xsl] onChange does not funtion, nenad | Date | RE: [xsl] onChange does not funtion, Michael Kay |
| Month |