xsl-list
[Top] [All Lists]

RE: FW: Dealing with mixed content

2005-02-16 05:59:39
Hello Joris,

Thank you for your prompt reply. The solution works well.

Being new to XSLT I'm a little unsure of exactly what the pattern in the
'use' attribute value in the xsl:key element is doing.

Could you please explain  it in a little more detail.

Thanks

Paul 

-----Original Message-----
From: Joris Gillis [mailto:roac(_at_)pandora(_dot_)be] 
Sent: 15 February 2005 18:48
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: Re: [xsl] FW: Dealing with mixed content

Tempore 19:31:36, die 02/15/2005 AD, hinc in 
xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
scripsit Paul Clarke
<pclarke(_at_)rcpsolutions(_dot_)com>:

Hello,

Apologies inadvance for the 'XSL 101' nature of this question but I'm 
new to XSL.

I receive XML from an automate conversion process, over which I have 
no control.

Example:

      <block >Text <font font-weight="bold">more text</font> more 
text<sr/>more text. <hr/>more text <sr/>more text.</block>

The <sr/> elements can be ignored but the <hr/> element indicates that 
an exisitng <P> element should be terminated and a new <P> element
started.

From the above sample the output would be:

      <P>Text <f>more text</f> more text more text. </P>
      <P>more text more text</P>

Hi,

This is a grouping problem. Numerous techniques are available for solving
problems like this.

Here you have one:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";  
version="1.0">
<xsl:output method="xml" indent="yes"/>

<xsl:key name="group" match="node()" use="generate-id((.. |
preceding-sibling::hr)[last()])"/>

<xsl:template match="block">
        <xsl:copy>
                <xsl:for-each select="hr|.">
                        <p>
                                <xsl:apply-templates
select="key('group',generate-id())"/>
                        </p>
                </xsl:for-each>
        </xsl:copy>
</xsl:template>

<xsl:template match="sr | hr"/>

<xsl:template match="font">
        <f>
                <xsl:apply-templates/>
        </f>
</xsl:template>

</xsl:stylesheet>


regards,
--
Joris Gillis (http://www.ticalc.org/cgi-bin/acct-view.cgi?userid=38041)
Spread the wiki (http://www.wikipedia.org)

--~------------------------------------------------------------------
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(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--


--~------------------------------------------------------------------
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(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



<Prev in Thread] Current Thread [Next in Thread>