[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

RE: Re: matching multiple times, outputting once?

Subject: RE: Re: matching multiple times, outputting once?
From: "McKeever, Marty" <marty.mckeever@xxxxxxxxxxxxxxxxx>
Date: Tue, 06 Nov 2001 07:24:40 -0500
xml emphasis is italic
Dimitre,
I appreciate your help, and apologize if i was unclear.  Your solution
inverted the input/output markup.

This is my XML source:
<emphasis bold="Yes" italic="Yes" underline="Yes">Hello</emphasis>

and this is the desired result of the transformation:
<u><i><b>Hello</b></i></u>

Your template is very intriguing, and i will try to work out the inverted
procedure myself, but certainly welcome your help!

Thanks!
Marty


> -----Original Message-----
> From: Dimitre Novatchev [mailto:dnovatchev@xxxxxxxxx]
> Sent: Tuesday, November 06, 2001 12:43 AM
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject:  Re: matching multiple times, outputting once?
> 
> 
> Here's the solution to your problem:
> 
> xml source document:
> -------------------
> <contents>
> <b>Hello</b>
> <i><b>Hello</b></i>
> <u><i><b>Hello</b></i></u>
> </contents>
> 
> 
> Stylesheet:
> ----------
> <xsl:stylesheet version="1.0" 
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> xmlns:trans="myTrans" exclude-result-prefixes="trans"
> >
> 
>   <xsl:output indent="yes" omit-xml-declaration="yes"/>
> 
>   <trans:trans>
>     <in>b</in>
>     <out>bold</out>
>     <in>i</in>
>     <out>italic</out>
>     <in>u</in>
>     <out>underline</out>
>   </trans:trans>
>   
>   <xsl:variable name="vTrans" select="document('')/*/trans:*"/>
>   
>   <xsl:template match="b | i | u">
>     <emphasis>
>       <xsl:apply-templates select="." mode="emph"/>
>     </emphasis>
>   </xsl:template>
>   
>   <xsl:template match="b | i | u" mode="emph">
>     <xsl:variable name="vEmphName" 
>                   select="$vTrans/in[. = name(current())]
>                                    /following-sibling::out[1]"/>
>       <xsl:attribute name="{$vEmphName}">yes</xsl:attribute> 
>       <xsl:apply-templates mode="emph"/>
>   </xsl:template>
>   
> </xsl:stylesheet>
> 
> 
> Result:
> ------
> <emphasis bold="yes">Hello</emphasis>
> <emphasis italic="yes" bold="yes">Hello</emphasis>
> <emphasis underline="yes" italic="yes" bold="yes">Hello</emphasis>
> 
> 
> Hope this helped.
> 
> Cheers,
> Dimitre Novatchev.
> 
> 
> "McKeever, Marty" <marty dot mckeever at bankofamerica dot com> wrote:
> 
> This is really bugging me, because i thought it would be 
> simple.  Maybe it
> is, and i'm just having a mental block -- thanks for your help.
> 
> Here are 3 possibilities that i have to match for, and 3 
> desired outputs:
> 
> <emphasis bold="Yes">Hello</emphasis>
> <emphasis bold="Yes" italic="Yes">Hello</emphasis>
> <emphasis bold="Yes" italic="Yes" underline="Yes">Hello</emphasis>
> 
> <b>Hello</b>
> <i><b>Hello</b></i>
> <u><i><b>Hello</b></i></u>
> 
> and every possible combination thereof.
> 
> 
> I have had no luck writing an intelligent template rule for 
> these -- the
> only way i've found so far is a deeply nested <xsl:choose> 
> which takes every
> possible combination into account.  This can't be the best 
> way to do this.
> 
> Everything else i've tried either matches only one rule, or 
> outputs "Hello"
> multiple times, one for each style.
> 
> There has to be an elegant solution i'm missing...
> 
> (and yes, i know i could easily write this out as <span
> style="font-style:bold,italic;text-decoration:underline">Hello
> </span>, but
> that's not what i'm looking for here.)
> 
> TIA!
> marty
> 
> 
> 
> 
> __________________________________________________
> Do You Yahoo!?
> Find a job, post your resume.
> http://careers.yahoo.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


Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.