Subject: Re: [xsl] XSL pattern needed for begin/end elements From: Mike Trotman <mike.trotman@xxxxxxxxxxxxx> Date: Wed, 07 Jul 2004 19:25:38 +0100 |
Hi all,
I'm looking for an XSL pattern to solve the problem of going from XML that has separate begin and end elements to one that does not.
Please, please note that I do not control either the source or target XML formats. If I did, this would be much easier.
Source XML snip:
<doc> <hyperlink_begin id=3D"111" end=3D"222"> <locator_url protocol=3D"http" host_name=3D"www.sf.net"/> </hyperlink_begin> <text_run>Click</text_run> <text_run emphasis=3D"bold">here.</text_run> <hyperlink_end id=3D"222" begin=3D"111"/> </doc>
Target XML example:
<cod> <HyperLink xlink:href=3D"http://www.sf.net"> Click <b>here.</b> </HyperLink> </cod>
In my case I can assume that associated begin and end hyperlink tags will occur as siblings -- though generally this is not the case and in fact, this is the reason the begin and end tags are unique elements.
I have a template that /almost/ works so feel free to let me know why it fails OR suggest a completely different solution.
Current XSL template snip:
<xsl:template match=3D"//hyperlink_begin"> <xsl:variable name=3D"linkUrl"> <xsl:value-of select=3D"locator_url/@protocol"/> <xsl:text>://</xsl:text> <xsl:value-of select=3D"locator_url/@host_name"/> </xsl:variable> <xsl:variable name=3D"endID" select=3D"@end"/> <xsl:element name=3D"HyperLink"> <xsl:attribute name=3D"xlink:href"><xsl:value-of select=3D"$linkUrl"/></xsl:attribute> <xsl:apply-templates select=3D"(following-sibling::*) except (following-sibling::hyperlink_end[@id=3D$endID]/following-sibling::*)"/> </xsl:element> </xsl:template>
This produces the correct hyperlink but the template for text_run elements gets called twice this way -- once inside the hyperlink, then again as templates continue to be applied.
Any help would be greatly appreciated. Thanks!
Tracy Atteberry
PS. I'm using Saxon 8
--+------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe@xxxxxxxxxxxxxxxxxxxxxx>
--+--
-- Datalucid Limited 8 Eileen Road South Norwood London SE25 5EJ United Kingdom
/ tel :0208-239-6810 mob: 0794-725-9760 email: mike.trotman@xxxxxxxxxxxxx
UK Co. Reg: 4383635 VAT Reg.: 798 7531 60
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] XSL pattern needed for be, Wendell Piez | Thread | RE: [xsl] XSL pattern needed for be, Pieter Reint Siegers |
Re: [xsl] slow xsltproc XInclude pr, Paul DuBois | Date | Re: [xsl] Pageing, Mike Trotman |
Month |