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[(_at_)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[(_at_)lang='en']"/></big>
<div class="text_en">
<xsl:apply-templates select="text[(_at_)lang='en']"/>
</div>
</xsl:template>
<xsl:template match="text[(_at_)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
--~------------------------------------------------------------------
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>
--~--