![]() |
![]() | ![]() | ![]() | Altova Mailing List Archives>Archive Index >microsoft.public.xml Archive Home >Recent entries >Thread Prev - Re: XSLT conversion >Thread Next - Re: XSLT conversion Re: XSLT conversionTo: NULL Date: 4/26/2004 4:43:00 PM Hello,
Thanks for your help but I've unfortunately note the same result. My last
ROW is empty...but I think its normal because u use <xsl:value-of
select="normalize-space(text()[parent::HD.C])"/> for CELL and the test is
<xsl:if test="$p1/HD.C">....so, the last ROW will never be generated ?!
Maybe, the node in the p1 parameter is not right ?
FYI : I'm using saxon 7.8 (xslt2) actually
My result is :
<TEST>
<ROW xmlns:fo="http://www.w3.org/1999/XSL/Format">
<CELL SPAN="2">Mundial</CELL>
<CELL SPAN="2">EEE</CELL>
<CELL SPAN="2">Portugal</CELL>
</ROW>
<ROW xmlns:fo="http://www.w3.org/1999/XSL/Format">
<CELL SPAN="0">Volume de negócios</CELL>
<CELL SPAN="0">Emprego</CELL>
<CELL SPAN="0">Volume de negócios</CELL>
<CELL SPAN="0">Emprego</CELL>
<CELL SPAN="0">Volume de negócios</CELL>
<CELL SPAN="0">Emprego</CELL>
</ROW>
<ROW xmlns:fo="http://www.w3.org/1999/XSL/Format"/>
</TEST>
"Han" <hp4444@k...> a écrit dans le message de
news:OWRk9E5KEHA.3052@T......
> I missed the recursion and dynamic depth part. Try this call-template.
>
> <xsl:stylesheet
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> version="1.0">
> <xsl:output method='xml'
> indent='yes' omit-xml-declaration='yes'/>
>
> <xsl:template match="HEADER.COL">
> <xsl:call-template name='t'>
> <xsl:with-param name='p1' select='.'/>
> </xsl:call-template>
> </xsl:template>
>
> <xsl:template name='t'>
> <xsl:param name='p1'/>
> <xsl:variable name='v1'
> select="count($p1//HD.C[not(following::HD.C)])*2-2"/>
> <ROW>
> <xsl:for-each select="$p1/HD.C">
> <CELL SPAN="{$v1}">
> <xsl:value-of select="normalize-space(text()[parent::HD.C])"/>
> </CELL>
> </xsl:for-each>
> </ROW>
>
> <xsl:if test="$p1/HD.C">
> <xsl:call-template name='t'>
> <xsl:with-param name='p1' select='$p1/HD.C'/>
> </xsl:call-template>
> </xsl:if>
>
> </xsl:template>
>
> <xsl:template match="@* | node()">
> <xsl:copy>
> <xsl:apply-templates select="@* | node()"/>
> </xsl:copy>
> </xsl:template>
>
> </xsl:stylesheet>
>
> THE RESULT IS AS FOLLOWS. I THINK YOU'LL DO YOUR HOUSE KEEPING.
>
> <TEST>
> <ROW>
> <CELL SPAN="4">Mondial</CELL>
> <CELL SPAN="4">EEE</CELL>
> <CELL SPAN="4">Portugal</CELL>
> </ROW>
> <ROW>
> <CELL SPAN="2">Volume</CELL>
> <CELL SPAN="2">Quantit?</CELL>
> <CELL SPAN="2">Volume</CELL>
> <CELL SPAN="2">Quantit?</CELL>
> <CELL SPAN="2">Volume</CELL>
> <CELL SPAN="2">Quantit?</CELL>
> </ROW>
> <ROW>
> <CELL SPAN="0">kg</CELL>
> <CELL SPAN="0">tonnes</CELL>
> <CELL SPAN="0">kg</CELL>
> <CELL SPAN="0">tonnes</CELL>
> <CELL SPAN="0">kg</CELL>
> <CELL SPAN="0">tonnes</CELL>
> <CELL SPAN="0">kg</CELL>
> <CELL SPAN="0">tonnes</CELL>
> <CELL SPAN="0">kg</CELL>
> <CELL SPAN="0">tonnes</CELL>
> <CELL SPAN="0">kg</CELL>
> <CELL SPAN="0">tonnes</CELL>
> </ROW>
> <ROW></ROW>
> </TEST>
>
>
> "Olivier VEIT" <olivier.veit@f...> wrote in message
> news:c6ih7g$ovt$1@n......
> > Sorry, were was i little mistake in the output I need. It is :
> >
> > OUTPUT i Need :
> > =================
> >
> > <?xml version="1.0" encoding="ASCII"?>
> > <TEST>
> > <ROW>
> > <CELL COLSPAN="4">Mondial</CELL>
> > <CELL COLSPAN="4">EEE</CELL>
> > <CELL COLSPAN="4">Portugal</CELL>
> > </ROW>
> > <ROW>
> > <CELL COLSPAN="2">Volume</CELL>
> > <CELL COLSPAN="2">Quantit?/CELL>
> > <CELL COLSPAN="2">Volume</CELL>
> > <CELL COLSPAN="2">Quantit?/CELL>
> > <CELL COLSPAN="2">Volume</CELL>
> > <CELL COLSPAN="2">Quantit?/CELL>
> > </ROW>
> > <ROW>
> > <CELL>kg</CELL>
> > <CELL>tonnes</CELL>
> > <CELL>kg</CELL>
> > <CELL>tonnes</CELL>
> > <CELL>kg</CELL>
> > <CELL>tonnes</CELL>
> > <CELL>kg</CELL>
> > <CELL>tonnes</CELL>
> > <CELL>kg</CELL>
> > <CELL>tonnes</CELL>
> > <CELL>kg</CELL>
> > <CELL>tonnes</CELL>
> > </ROW>
> > </TEST>
> >
> >
> > "Olivier VEIT" <olivier.veit@f...> a ?rit dans le message de
> > news:c6igv0$nri$1@n......
> > > Hello,
> > >
> > > thanks, but your solution is only possible for this exemple. The
> > stylesheet
> > > should be dynamic and treat a undefined number of imbricated HD.C.
> > > The COLSPAN attribute should also be generated dynamically. I think
the
> > only
> > > solution is to use recursion...but how ?
> > > Here, an other exemple :
> > >
> > > INPUT :
> > > =======
> > > <?xml version="1.0" encoding="UTF-8"?>
> > >
> > > <TEST>
> > > <HEADER.COL>
> > > <HD.C>Mondial
> > > <HD.C TYPE="INT">Volume
> > > <HD.C>kg</HD.C>
> > > <HD.C>tonnes</HD.C>
> > > </HD.C>
> > > <HD.C TYPE="INT">Quantit?
> > > <HD.C>kg</HD.C>
> > > <HD.C>tonnes</HD.C>
> > > </HD.C>
> > > </HD.C>
> > > <HD.C>EEE
> > > <HD.C TYPE="INT">Volume
> > > <HD.C>kg</HD.C>
> > > <HD.C>tonnes</HD.C>
> > > </HD.C>
> > > <HD.C TYPE="INT">Quantit?
> > > <HD.C>kg</HD.C>
> > > <HD.C>tonnes</HD.C>
> > > </HD.C>
> > > </HD.C>
> > > <HD.C>Portugal
> > > <HD.C TYPE="INT">Volume
> > > <HD.C>kg</HD.C>
> > > <HD.C>tonnes</HD.C>
> > > </HD.C>
> > > <HD.C TYPE="INT">Quantit?
> > > <HD.C>kg</HD.C>
> > > <HD.C>tonnes</HD.C>
> > > </HD.C>
> > > </HD.C>
> > > </HEADER.COL>
> > > </TEST>
> > >
> > > OUTPUT i Need :
> > > =================
> > >
> > > <?xml version="1.0" encoding="ASCII"?>
> > > <TEST>
> > > <ROW>
> > > <CELL COLSPAN="4">Mondial</CELL>
> > > <CELL COLSPAN="4">EEE</CELL>
> > > <CELL COLSPAN="4">Portugal</CELL>
> > > </ROW>
> > > <ROW>
> > > <CELL COLSPAN="2">Volume</CELL>
> > > <CELL COLSPAN="2">Quantit?/CELL>
> > > <CELL COLSPAN="2">Volume</CELL>
> > > <CELL COLSPAN="2">Quantit?/CELL>
> > > <CELL COLSPAN="2">Volume</CELL>
> > > <CELL COLSPAN="2">Quantit?/CELL>
> > > </ROW>
> > > <ROW>
> > > <CELL>kg</CELL>
> > > <CELL>tonnes</CELL>
> > > <CELL>kg</CELL>
> > > <CELL>tonnes</CELL>
> > > <CELL>kg</CELL>
> > > <CELL>tonnes</CELL>
> > > <CELL>kg</CELL>
> > > <CELL>tonnes</CELL>
> > > </ROW>
> > > </TEST>
> > >
> > >
> > >
> > > "Han" <hp4444@k...> a ?rit dans le message de
> > > news:ONThnxoKEHA.2576@T......
> > > > Try,
> > > >
> > > > <xsl:stylesheet
> > > > xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> > > > version="1.0">
> > > > <xsl:output method='xml' indent='yes' omit-xml-declaration='yes'/>
> > > >
> > > > <xsl:template match="/">
> > > > <TEST>
> > > > <ROW>
> > > > <CELL COLSPAN="2">Mundial</CELL>
> > > > <CELL COLSPAN="2">EEE</CELL>
> > > > <CELL COLSPAN="2">Portugal</CELL>
> > > > </ROW>
> > > > <ROW>
> > > > <xsl:apply-templates select="//HD.C/HD.C"/>
> > > > </ROW>
> > > > </TEST>
> > > > </xsl:template>
> > > >
> > > > <xsl:template match='HD.C'>
> > > > <CELL>
> > > > <xsl:value-of select='.'/>
> > > > </CELL>
> > > > </xsl:template>
> > > >
> > > > </xsl:stylesheet>
> > > >
> > > > "Olivier VEIT" <olivier.veit@f...> wrote in message
> > > > news:c6b5bq$6fh$1@n......
> > > > > Hello All,
> > > > >
> > > > > I would like to write a stylesheet enbling me to get the end
> structure
> > > > from
> > > > > start structu.
> > > > >
> > > > > My start structure :
> > > > > ==============
> > > > > <TEST>
> > > > > <HEADER.COL>
> > > > > <HD.C>Mundial
> > > > > <HD.C TYPE="INT">Volume 1</HD.C>
> > > > > <HD.C TYPE="INT">Test 1</HD.C>
> > > > > </HD.C>
> > > > > <HD.C>EEE
> > > > > <HD.C TYPE="INT">Volume 2</HD.C>
> > > > > <HD.C TYPE="INT">Test 2</HD.C>
> > > > > </HD.C>
> > > > > <HD.C>Portugal
> > > > > <HD.C TYPE="INT">Volume 3</HD.C>
> > > > > <HD.C TYPE="INT">Test 3</HD.C>
> > > > > </HD.C>
> > > > > </HEADER.COL>
> > > > > </TEST>
> > > > >
> > > > > This is the end structure I would like to have :
> > > > > ======================================
> > > > > <TEST>
> > > > > <ROW>
> > > > > <CELL COLSPAN="2">Mundial</CELL>
> > > > > <CELL COLSPAN="2">EEE</CELL>
> > > > > <CELL COLSPAN="2">Portugal</CELL>
> > > > > </ROW>
> > > > > <ROW>
> > > > > <CELL>Volume 1</CELL>
> > > > > <CELL>Test 1</CELL>
> > > > > <CELL>Volume 2</CELL>
> > > > > <CELL>Test 2</CELL>
> > > > > <CELL>Volume 3</CELL>
> > > > > <CELL>Test 3</CELL>
> > > > > </ROW>
> > > > > </TEST>
> > > > >
> > > > > The solution should be general so that it also works with multiple
> > HD.C
> > > > > imbrications.
> > > > >
> > > > > Thanks for your answers
> > > > >
> > > > > Have a nice Day
> > > > >
> > > > > Olivier
> > > > >
> > > > >
> > > >
> > > >
> > >
> > >
> >
> >
>
>
| ![]() | ![]() | ![]() |
| Company | Legal | Press | Partners | Careers | Sitemap | Contact Us | Altova Blog | |||
|
