xslt - separating element and text

Jijai

Usenet Archive
Joined
Sep 18, 2004
Messages
2
Reaction score
0
Hi All,

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? Thanks in advance for your help.

regards,
Jijai
 

Martin Honnen

Usenet Archive
Joined
Apr 8, 2000
Messages
6,174
Reaction score
0
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>
 

Jijai

Usenet Archive
Joined
Sep 18, 2004
Messages
2
Reaction score
0
Martin Honnen said:
Jijai wrote:

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 want:

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

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

<xsl:stylesheet version = '1.0'
xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

<xsl:eek:utput method="html"/>
<xsl:template match="doc">
<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 select="." mode="math-ns-copy"/>
</xsl:template>

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

</xsl:stylesheet>
 

Peter Flynn

Usenet Archive
Joined
Jan 2, 2000
Messages
1,813
Reaction score
0
Jijai wrote:
[...]
<xsl:template match="*" mode="math-ns-copy">
<xsl:element name="{local-name}">
<xsl:copy-of select="@*"/>
<xsl:apply-templates mode="math-ns-copy"/>
</xsl:element>
</xsl:template>

What's wrong with using this instead?

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

Entia non sunt multiplicanda præter necessitatem.

///Peter
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
548,042
Messages
3,104,224
Members
248,132
Latest member
henrywalsh

Latest Threads

Top