Write a top-level stylesheet module that imports your "original" stylesheet
module, with the rule:
<xsl:template match="*">
<xsl:if test="@lang = $selectedLanguage or ((not(@lang) and
$defaultLanguage = $selectedLanguage)">
<xsl:apply-imports/>
</xsl:if>
</xsl:template>
This works provided all the elements carrying a lang attribute are processed
using apply-templates rather than for-each, value-of, etc.
Any reason you are using @lang rather than @xml:lang? (I'm just curious. I
always thought the inclusion of @xml:lang in the XML spec, as the only name
that has a predefined meaning, was rather an oddity, and I'm interested that
you are ignoring it and defining your own.)
Michael Kay
http://www.saxonica.com/
-----Original Message-----
From: Jan Limpens [mailto:jan(_dot_)limpens(_at_)gmail(_dot_)com]
Sent: 19 September 2004 21:30
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] flatten tree
hi people,
thanks in advance for all the great help you are giving to
the community!
i habe a xml file like this:
<root>
<foo>
<bar lang="de">Hallo</bar>
<bar lang="en">Hello</bar>
<bar lang="es">Olá</bar>
</foo>
<foo>
<!-- No "de" here -->
<bar lang="en">Good Bye</bar>
<bar lang="es">Hasta la vista</bar>
</foo>
</root>
and an xsl file where I define
<xsl:param name="selectedLanguage" select="'de'"/>
<xsl:param name="defaultLanguage" select= "'en'"/>
and I want a result like
<div>
<p>Hallo</p>
<p>Goodbye<p/><!--Fallback to "en"-->
</div>
is there a good pattern for this situation?
--
Jan
http://www.limpens.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>
--+--