[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: A simple basic question
[Philip Mak] > I looked at various XSL guides, but I still can't figure out how to > transform this: > > <document> > <paragraph>Here is a <bold>bold</bold> word.</paragraph> > <paragraph>Here is an <italic>italic</italic> word.</paragraph> > </document> > > into this: > > <body> > <p>Here is a <b>bold</b> word.</p> > <p>Here is an <i>italic</i> word.</p> > </document> > This result isn't literally possible since it is not well-formed, but I take it that you really meant to close with </body> instead. > The part I have trouble with is the <bold> and <italic>. The thing is > that they could appear anywhere in the document; they're not part of a > rigid structure. It seems that when I use <xsl:value-of > select="paragraph">, the <bold> and <italic> tags inside just get > stripped out. > That's natural since the purpose of value-of is to get the text content. Instead, you have to supply the b and i elements yourself. Exactly how may depend on just what else you want to do, but here's a stylesheet fragment that shows how you can do it. It depends on the built-in template - that handles all elements in the absence of other templates - to get all the text, and the stylesheet adds the p, b, and i elements where needed. <xsl:template match="/"> <body> <xsl:apply-templates/> </body> </xsl:template> <xsl:template match='paragraph'> <p><xsl:apply-templates/></p> </xsl:template> <xsl:template match='bold'> <b><xsl:apply-templates/></b> </xsl:template> <xsl:template match='italic'> <i><xsl:apply-templates/></i> </xsl:template> Cheers, Tom P XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|