|
Subject: RE: [xsl] need help with converting attribute into elements From: "Michael Kay" <mhk@xxxxxxxxx> Date: Tue, 14 Oct 2003 18:13:16 +0100 |
The following solution (using a few 2.0 features) is perhaps a little
more elegant.
<xsl:template match="text">
<xsl:apply-templates select="." mode="inline"/>
</xsl:template>
<xsl:template match="*[@bold='true']" mode="inline" priority="10">
<b><xsl:sequence select="my:inline(., @bold)"/></b>
</xsl:template>
<xsl:template match="*[@italic='true']" mode="inline" priority="9">
<i><xsl:sequence select="my:inline(., @italic)"/></i>
</xsl:template>
<xsl:template match="*[@underline='true']" mode="inline" priority="8">
<u><xsl:sequence select="my:inline(., @underline)"/></u>
</xsl:template>
<xsl:template match="*" mode="inline" priority="7">
<xsl:apply-templates/>
</xsl:template>
<xsl:function name="my:inline" as="element()">
<xsl:param name="elem" as="element()"/>
<xsl:param name="att" as="attribute()"/>
<xsl:variable name="x">
<xsl:copy>
<xsl:copy-of select="$elem/(node() | @*) except $att"/>
</xsl:copy>
</xsl:variable>
<xsl:apply-templates select="$x" mode="inline"/>
</xsl:function>
Michael Kay
> -----Original Message-----
> From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of
> Aleš Peregrin
> Sent: 14 October 2003 12:12
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: Re: [xsl] need help with converting attribute into elements
>
>
> Hi,
> thanx for your time. Your solution is now clear for me.
> Now I know I was right: there is no easy way. I gues there
> are some things XSLT can't do. So thanx again.
>
> Ales Peregrin
>
> ----- Original Message -----
> From: "Rod Humphris - FLPTN" <rod.humphris@xxxxxxxxxxxxxx>
> To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
> Sent: Tuesday, October 14, 2003 12:19 PM
> X-Scanned: By Symantec Anti-Virus Scan Engine
> Subject: Re: [xsl] need help with converting attribute into elements
>
>
> > Code nested choose/when/otherwise blocks to cover all the
> combinations
> that
> > you want to catch. It isn't pretty but it will work.
> Copy/paste will
> > get
> you
> > there fast enough!
> >
> > <xsl:template match="text">
> > <p>
> > <xsl:choose>
> > <xsl:when test="@bold='true'">
> > <b>
> > <xsl:choose>
> > <xsl:when test="@italic='true'">
> > <i>
> > <xsl:choose>
> > <xsl:when test="@underline='true'">
> > <u>
> > <xsl:value-of select="."/>
> > </u>
> > <xsl:otherwise>
> > <xsl:value-of select="."/>
> > </xsl:otherwise>
> > </xsl:choose>
> > </i>
> > </xsl:when>
> > <xsl:otherwise>
> > etc, etc....
> > </b>
> > </xsl:when>
> > <xsl:otherwise>
> >
> > </xsl:otherwise>
> > </xsl:choose>
> > </p>
> > </xsl:template>
> > There you are I've basically done it for you, just fill in
> the missing
> bits.
> >
> > I can't myself think of a better way. I think perhaps that
> sometimes
> > xslt just is verbose and this may be one of them.
> >
> > The best I can suggest is that you could write the code
> inside a named
> > template (look it up if you don't know) which takes an element as a
> > parameter and then at least you won't have to write it
> again and you
> > can
> use
> > it on other elements besides a 'text' one. You could then
> xsl:include/import
> > it from a library xslt to make it more reusable again.
> >
> > Ah just saw Jarno's. Much better. Take your pick.
> >
> > Cheers
> >
> > Rod
> >
> > -----Original Message-----
> > From: Aleš Peregrin [mailto:ales.peregrin@xxxxxxxxxx]
> > Sent: 14 October 2003 10:49
> > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> > X-Scanned: By Symantec Anti-Virus Scan Engine
> > Subject: RE: [xsl] need help with converting attribute into elements
> >
> >
> > Hi Rod,
> >
> > thanx for your solution suggestion.
> > I'm not sure, wheter I understand it right. Does it mean to
> write it
> > eight times, once for each combinatoion of the atribute
> values, e.g.
> > first for "all true", than <otherwise> one of them false
> and so on? Or
> > is there some easier way? Could you please write some more detailed
> > example?
> >
> > thanx
> >
> > Ales Peregrin
> >
> > ----- Original Message -----
> > From: "Rod Humphris - FLPTN" <rod.humphris@xxxxxxxxxxxxxx>
> > To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
> > Sent: Tuesday, October 14, 2003 11:05 AM
> > X-Scanned: By Symantec Anti-Virus Scan Engine
> > X-Scanned: By Symantec Anti-Virus Scan Engine
> > Subject: RE: [xsl] need help with converting attribute into elements
> >
> >
> > > Hi Ales
> > >
> > > I expect someone could suggest a prettier and more
> modular approach
> > > but nested choose blocks would do it:
> > >
> > > <xsl:template match="text">
> > > <p>
> > > <xsl:choose>
> > > <xsl:when test="@bold='true'">
> > > <b>
> > > <xsl:choose>
> > > <xsl:when test="@italic='true'">
> > > <i>
> > > etc, etc.....
> > > </b>
> > > </xsl:when>
> > > <xsl:otherwise>
> > >
> > > </xsl:otherwise>
> > > </xsl:choose>
> > > </p>
> > > </xsl:template>
> > >
> > > Cheers
> > >
> > > Rod
> > >
> > >
> > > -----Original Message-----
> > > From: Aleš Peregrin [mailto:ales.peregrin@xxxxxxxxxx]
> > > Sent: 14 October 2003 09:47
> > > To: XSL-List@xxxxxxxxxxxxxxxxxxxxxx
> > > X-Scanned: By Symantec Anti-Virus Scan Engine
> > > Subject: RE: [xsl] need help with converting attribute
> into elements
> > >
> > >
> > > Hi!
> > > I'm trying to make a XSLT stylexheet for transforming XML
> document
> > > into
> > HTML
> > > and there is a problem I'm unable to solve, even after a week of
> > > trying
> > and
> > > searching all over the internet. The problem looks quite
> easy to me
> > > and
> it
> > > seems I'm missing something important about XSL
> language. Here it
> > > goes:
> > >
> > > I have an XML tag which looks like this: <text bold=true
> italic=true
> > > underline=false>Help!</text> In this case, the result in
> HTML should
> > > be: <font>
> > > <b>
> > > <i>
> > > Help!
> > > </i>
> > > </b>
> > > </font>
> > >
> > > I simply need to transform the attributes into HTML
> elements so that
> > > any
> > of
> > > the possible combinations of the atributes' values would be
> > > transformed correctly.
> > >
> > > Can anyone help me?
> > > Thanx.
> > > Ales Peregrin
> > >
> > >
> > > XSL-List info and archive:
> > > http://www.mulberrytech.com/xsl/xsl-list
> > >
> > >
> > >
> ____________________________________________________________________
> > > ____
> > > This email has been scanned for all viruses by the
> MessageLabs Email
> > > Security System. For more information on a proactive
> email security
> > > service working around the clock, around the globe, visit
> > > http://www.messagelabs.com
> > >
> ______________________________________________________________
> __________
> > >
> > >
> > > ________________________________________________________________
> > > Any opinions expressed in this email are those of the
> individual and
> > > not
> > necessarily the Company. Unless expressly stated to the
> contrary, this
> email
> > is not intended to give rise to a new, or affect an existing,
> > contractual
> or
> > other legal relationship.This email and any files
> transmitted with it,
> > including replies and forwarded copies which may contain
> alterations)
> > subsequently transmitted from the Company, are confidential
> and solely
> > for the use of the intended recipient. The unauthorised use,
> > disclosure or copying of this email, or any other information
> > contained or attached,is prohibited and could, in certain
> > circumstances, be a criminal offence.
> > >
> > > If you have received this email in error please notify
> the sender as
> soon
> > as possible.
> > >
> > > This footnote also confirms that this email message has
> been swept
> > > for
> the
> > presence of computer viruses.
> > >
> > > www.focusdiy.co.uk
> > > _________________________________________________________________
> > >
> > >
> ____________________________________________________________________
> > > ____
> > > This email has been scanned for all viruses by the
> MessageLabs Email
> > > Security System. For more information on a proactive
> email security
> > > service working around the clock, around the globe, visit
> > > http://www.messagelabs.com
> > >
> ______________________________________________________________
> __________
> > >
> > > XSL-List info and archive:
> > > http://www.mulberrytech.com/xsl/xsl-list
> > >
> > >
> >
> >
> >
> > XSL-List info and archive:
> http://www.mulberrytech.com/xsl/xsl-list
> >
> >
> >
> ______________________________________________________________________
> > __
> > This email has been scanned for all viruses by the MessageLabs Email
> > Security System. For more information on a proactive email security
> > service working around the clock, around the globe, visit
> > http://www.messagelabs.com
> >
> ______________________________________________________________
> __________
> >
> >
> ______________________________________________________________________
> > __
> > This email has been scanned for all viruses by the MessageLabs Email
> > Security System. For more information on a proactive email security
> > service working around the clock, around the globe, visit
> > http://www.messagelabs.com
> >
> ______________________________________________________________
> __________
> >
> > XSL-List info and archive:
> http://www.mulberrytech.com/xsl/xsl-list
> >
> >
>
>
> XSL-List info
> and archive: http://www.mulberrytech.com/xsl/xsl-list
>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] need help with converting, Aleš Peregrin | Thread | RE: [xsl] need help with converting, Jarno . Elovirta |
| RE: [xsl] resetting a variable, Martinez, Brian | Date | RE: [xsl] attribute position help !, Michael Kay |
| Month |