This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: one xsl file for two parsings
- To: xsl-list <xsl-list at mulberrytech dot com>
- Subject: Re: one xsl file for two parsings
- From: Joseph Vallot <jvallot at atos-group dot com>
- Date: Tue, 04 Apr 2000 17:22:02 +0200
- Organization: Atos Integration
- References: <38E9EC98.E7F45238@axime-is.fr>
- Reply-To: xsl-list at mulberrytech dot com
I tried to think by myself (!) and found a part of the
answer. Since I am not sure it is correctly written,
or if there is a better way, here is what I've done.
Joseph Vallot a écrit :
>
> I want to write an xsl file to process several xml files, and result
> (parsing)
> would depend on a given field value, and I don't see how to do that.
>
> Example:
>
> xml #1 would be
> ===
> <?xml version="1.0"?>
> <mymsg>
> <qty>123</qty>
> <type>new</type>
> <code>5173</code>
> </mymsg>
> ===
> and parsed into
> ===
> <?xml version="1.0"?>
> <new>
> <qty>123</qty>
> <code>5173</code>
> </new>
> ===
>
> when xml #2 would be
> ===
> <?xml version="1.0"?>
> <mymsg>
> <qty>123</qty>
> <type>cancel</type>
> <code>5173</code>
> </mymsg>
> ===
> and parsed into
> ===
> <?xml version="1.0"?>
> <cancel>
> <code>5173</code>
> </cancel>
> ===
>
> In this example, parsing depend on <type> value.
xsl I wrote is :
===
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:template match="/mymsg">
<xsl:choose>
<xsl:when test="./type='new'">
<NEW>
<xsl:apply-templates mode="new" />
</NEW>
</xsl:when>
<xsl:when test="./type='cancel'">
<CANCEL>
<xsl:apply-templates mode="cancel" />
</CANCEL>
</xsl:when>
</xsl:choose>
</xsl:template>
<xsl:template match="/mymsg/*" mode="new">
(new) <xsl:copy><xsl:value-of select="." /></xsl:copy>
</xsl:template>
<xsl:template match="/mymsg/*" mode="cancel">
(cancel) <xsl:copy><xsl:value-of select="." /></xsl:copy>
</xsl:template>
</xsl:stylesheet>
===
note : "(new)" and "(cancel)" strings are just here to
see where parser goes !
questions are :
1. is it the fastest/best/etc way to do that ?
2. how do I filter out some initial nodes (<type> has
to be dropped)
Thank you in advance
--
Joseph
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list