Subject: [xsl] [Fwd: Re: Re: Using a variable in XSLT] From: Tim Müller-Seydlitz <tms@xxxxxxxxxxxxxxxxxx> Date: Thu, 04 Sep 2003 13:10:05 +0200 |
Hi, I am still needing your help.
I want to transform a xsd file that contains documentation in multiple languages. Source Example <xs:element name="account" type="Account"> <xs:annotation> <xs:documentation xml:lang="en">This is the English general description <sys:one>That's the special purpose description for system 1</sys:one> <sys:two>That's the special purpose description for system 2</sys:two> </xs:documentation> <xs:documentation xml:lang="de">Das ist die deutsche allgemeneine Beschreibung. <sys:one>Das ist die spezielle Beschreibung für System 1</sys:one> <sys:two>Das ist die spezielle Beschreibung für System 2</sys:two> </xs:documentation> </xs:annotation> </xs:element>
I would like to be able to choose a language. Such that all documentation elements but those in the selected language are erased. I also would like to be able to choose a sys. Such that only the selected sys is present in the output.
The result file should like this. <xs:element name="account" type="Account"> <xs:annotation> <xs:documentation xml:lang="de"> Das ist die spezielle Beschreibung für System 1 </xs:documentation> </xs:annotation> </xs:element>
Thanks in advance TMS
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:sys="http://www.you-know-who.com/2003/systems" version="1.0">
<xsl:param name="SystemSelected" select="'sys:ARTS'" /> <xsl:param name="lang" select="'de'" />
<xsl:template match='/'> <xsl:apply-templates/> </xsl:template>
<!-- This is to take out the documentation in all but the selected language --> <!-- Would be nice to use a variable here --> <xsl:template match="//xs:annotation/xs:documentation[not(lang('de'))]" priority="2"/> <!-- This is to select the SelectedLanguage and the SelectedSystem and to take it one level higher -->
<!-- This doesn't deliver the expected result. In particular because xs:documentation is not present in the output anymore --> <xsl:template match="//xs:annotation/xs:documentation"> <xsl:apply-templates select="self::*[lang($lang)]/*[name()=$SystemSelected]"/> </xsl:template>
<xsl:template match='@* | node()' priority="-1"> <xsl:copy> <xsl:apply-templates select='@* | node()'/> </xsl:copy> </xsl:template>
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] with-parameter?, Jarno . Elovirta | Thread | Re: [xsl] [Fwd: Re: Re: Using a var, David Carlisle |
RE: [xsl] WHITESPACE WITHIN TAGS., Michael Kay | Date | Re: [xsl] [Fwd: Re: Re: Using a var, David Carlisle |
Month |