Altova Mailing List Archives

Re: xslt - separating element and text

From: juli21781@-----.--- (-----)
Date: 9/18/2004 4:26:00 PM
Martin Honnen <mahotrash@y...> wrote in message news:<414c5017$0$18550$9b4e6d93@n...>...
> Jijai wrote:
> > I need your help. I have spent almost one day to figure this out, here
> > is my problem:
> > 
> > In my dtd:
> > 
> > <!ELEMENT para (#PCDATA | math | link)+>
> > 
> > In my xml:
> > 
> > <para>
> >    sentence1
> >    <math>math equation</math>
> >    sentence2
> >    <link href="somewhere">link</link>
> >    sentence3
> > </para>
> > 
> > I want to transform my xml into html by using an xsl, and i want to
> > change every <link> in <para> value there into <a href=".."> form. And
> > i also want to copy everything inside <math> into my html page. Is
> > there any solution for this?
> You haven't shown us what HTML output you want so I can only guess:
>    <xsl:template match="para">
>      <p>
>        <xsl:apply-templates />
>      </p>
>    </xsl:template>
>    <xsl:template match="link">
>      <a href="{@href}"><xsl:value-of select="." /></a>
>    </xsl:template>
>    <xsl:template match="math">
>      <xsl:apply-templates />
>    </xsl:template>

Oops, sorry, forgot to give the output, here is the output that i

sentence1 <math>...</math> sentence2 <a href="..">link</a> sentence3

Anyway, i already tried your suggestion but the <math> tag is not
included in the output, i made a modification and it works :) thanks

<xsl:stylesheet version = '1.0' 

<xsl:output method="html"/> 
<xsl:template match="doc">
		<xsl:apply-templates />
<xsl:template match="link">
    <a href="{@href}"><xsl:value-of select="." /></a>
<xsl:template match="math">
    <xsl:apply-templates select="." mode="math-ns-copy"/>			

<xsl:template match="*" mode="math-ns-copy">
	<xsl:element name="{local-name()}">
		<xsl:copy-of select="@*"/>
		<xsl:apply-templates mode="math-ns-copy"/>



These Archives are provided for informational purposes only and have been generated directly from the Altova mailing list archive system and are comprised of the lists set forth on Therefore, Altova does not warrant or guarantee the accuracy, reliability, completeness, usefulness, non-infringement of intellectual property rights, or quality of any content on the Altova Mailing List Archive(s), regardless of who originates that content. You expressly understand and agree that you bear all risks associated with using or relying on that content. Altova will not be liable or responsible in any way for any content posted including, but not limited to, any errors or omissions in content, or for any losses or damage of any kind incurred as a result of the use of or reliance on any content. This disclaimer and limitation on liability is in addition to the disclaimers and limitations contained in the Website Terms of Use and elsewhere on the site.