Hi, Jacob,
I have written a different stylesheet to produce a dl list with different
dd elements if an attribute named "this" is present:
<?xml version='1.0'?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="iso-8859-1" omit-xml-declaration="yes"
standalone="no" indent="no" />
<xsl:template match="/">
<xsl:apply-templates match="opml/body/outline"/>
</xsl:template>
<xsl:template match="outline">
<dl>
<dt><xsl:value-of select="@title" /></dt>
<xsl:for-each select="outline">
<xsl:choose>
<xsl:when test="@this">
<dd class="active">
<a href="{(_at_)url}><xsl:value-of select="@title" /></a>
</dd>
</xsl:when>
<xsl:otherwise>
<dd>
<a href="{(_at_)url}><xsl:value-of select="@title" /></a>
</dd>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
<dl>
</xsl:template>
</xsl:stylesheet>
I think this stylesheet will work (though it's hard to say with no XML
source to examine), and it much more closely follows XSLT's normal
processing model.
Note that this stylesheet still does not produce a well-formed XML
document, as the result document will have no root node (or will have
multiple root nodes, depending on how you view such things). I assume you
are going to do something more with the output (such as embed it in some
other file).
HTH
Jay Bryant
Bryant Communication Services
(presently consulting at Synergistic Solution Technologies)
Jacob Friis Larsen <webcom(_dot_)dk(_at_)gmail(_dot_)com>
05/09/2005 10:39 AM
Please respond to
xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
To
xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
cc
Subject
[xsl] <xsl:output method="xml"> and an if sentence to output XML
Below is my XSLT file.
I'd like to use <xsl:output method="xml">, but I haven't found a
solution to my problem, which is how to output <dd class="active"> if
parameter this exists and <dd> if it doesn't exist.
I would appreciate any help.
Thanks,
Jacob
<?xml version='1.0'?>
<xsl:stylesheet version="1.0" xmlns:xsl="
http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" encoding="iso-8859-1"
omit-xml-declaration="yes" standalone="no" indent="no" />
<xsl:template match="/">
<xsl:for-each select="/opml/body/outline">
<xsl:call-template name="outline">
<xsl:with-param
name="title"><xsl:value-of select="@title"
/></xsl:with-param>
</xsl:call-template>
</xsl:for-each>
</xsl:template>
<xsl:template name="outline">
<xsl:param name="title" />
<xsl:text><dl></xsl:text>
<xsl:text><dt></xsl:text>
<xsl:value-of select="$title" />
<xsl:text></dt></xsl:text>
<xsl:for-each select="outline">
<xsl:choose>
<xsl:when
test="@this"><dd class="active"></xsl:when>
<xsl:otherwise><dd></xsl:otherwise>
</xsl:choose>
<xsl:text><a
href="</xsl:text>
<xsl:value-of
select="@url" />
<xsl:text>"></xsl:text>
<xsl:value-of
select="@title" />
<xsl:text></a></xsl:text>
<xsl:text></dd></xsl:text>
</xsl:for-each>
<xsl:text><dl></xsl:text>
</xsl:template>
</xsl:stylesheet>
--~------------------------------------------------------------------
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>
--~--