Subject: Re: [xsl] transformation of narrative documents with nested elements From: Raffaele Sena <raff@xxxxxxxxxxxx> Date: Sun, 16 Jan 2005 09:56:34 -0800 |
<xsl:template match="bold"> <strong><xsl:apply-templates select="."/></strong> </xsl:template>
<xsl:template match="emph"> <i><xsl:apply-templates select="."/></i> </xsl:template>
Hello,
I am an xml-xsl newbie, and I'm writing some xsl templates for a small CMS that I'm coding,
using PHP(+Dom extension) and MySql. At the moment i have some problems in the html transformation of this file called news_list.xml.
consider the following xml source:
-------------------------------------------------
1 <?xml version="1.0" encoding="iso-8859-1"?>
2 <news_list>
3
4 <!-- other news -->
5
6 <news id="1" topic="a_topic">
7 <title lang="en"> The English title </title>
8 <title lang="it"> the Italian title </title>
9 <author> me </author>
11 <date lang="en" day="16" month="January" year="2005"/>
12 <date lang="it" day="16" month="Gennaio" year="2005"/>
13
14 <text lang="en">
15 <bold>This is a bold text </bold>
16 <emph> This is an italic text </emph>
17 <bold>this is <emph> an italic text nested</emph> inside a bold text </bold> <!-- here is my problem -->
18 </text>
19 <text lang="it">
20 bla bla bla in italian...
21 </text>
22
23 </news>
24 <!-- other news -->
25 </news_list>
--------------------------------------------------
I would like to transform this in html, according to the following goals:
* I have to select only the news where an English title is available
* I have to transform all the elements inside the English description,
and they may occur as nested elements, as in line 17: X PATH: /news_list/news/description[lang='it']/bold/emph
at the moment i wrote this stylesheet, that does not achieve the second goal: i have a correct output for line 15 and 16, but i have no output for line 17
--------------------------------------------------
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="iso-8859-1"/>
<xsl:template match="/"> <div class="news_list"> <xsl:apply-templates select="/news_list/news"/> </div> </xsl:template> <xsl:template match="/news_list/news"> <xsl:if test="title[@lang='en']"> <xsl:choose> <xsl:when test="position()=1"> <div class="first_news"> <xsl:call-template name="news_en"/><br/> </div> </xsl:when> <xsl:otherwise> <div class="news"> <xsl:call-template name="news_en"/><br/> </div> </xsl:otherwise> </xsl:choose> </xsl:if> </xsl:template>
<xsl:template name="news_en">
<sup id="position_number">
<xsl:value-of select="position()"/>
</sup>
<big class="news_title"><xsl:value-of select="title[@lang='en']"/></big>
<div class="text_en">
<xsl:apply-templates select="text[@lang='en']"/>
</div>
</xsl:template>
<xsl:template match="text[@lang='en']"> <xsl:apply-templates/> </xsl:template> <xsl:template match="//bold"> <xsl:element name="strong"> <xsl:value-of select="."/> </xsl:element> </xsl:template>
<xsl:template match="//emph"> <xsl:element name="i"> <xsl:value-of select="."/> </xsl:element> </xsl:template>
</xsl:stylesheet>
--------------------------------------------------
I tested this stylesheet also with xslproc, so i think this is not a problem
of the PhpDom implementation, but a problem in my XPATH sintax.....
Thank you in advance for your attention,
_Andrea
!DSPAM:41ea98a021275428412669!
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] transformation of narrative d, Andrea Fiore | Thread | RE: [xsl] transformation of narrati, Michael Kay |
[xsl] Many XSLT formatting, Marcos Hercules Sant | Date | Re: [xsl] transformation of narrati, Joris Gillis |
Month |