This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: Trouble writing .xsl
- From: Jason Rizer <jasonriz at yahoo dot com>
- To: xsl-list at lists dot mulberrytech dot com
- Date: Sun, 13 Jan 2002 08:43:30 -0800 (PST)
- Subject: RE: [xsl] Trouble writing .xsl
- Reply-to: xsl-list at lists dot mulberrytech dot com
--- "Sullivan, Dan" <dsullivan@develop.com> wrote:
> You need to make use of an identity transform like
> this:
>
>
> <xsl:stylesheet
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> version="1.0"
> xmlns:ABC="org.jason">
>
> <!-- identity transform, for everything you don't
> care about changing
> -->
> <xsl:template match="@*|node()">
> <xsl:copy>
> <xsl:apply-templates select="@*|node()"/>
> </xsl:copy>
> </xsl:template>
>
> <!-- transform for jason, the only element you care
> about changing -->
> <xsl:template match="ABC:jason.Smith">
> <ABC:Smith>
> <!-- process children, atrs, if any -->
> <xsl:apply-templates select="@*|node()"/>
> </ABC:Smith>
> </xsl:template>
>
> </xsl:stylesheet>
>
>
> Also your source file had a typo in it (XMI
> Content).
>
> Dan
>
> -----Original Message-----
> From: Jason Rizer [mailto:jasonriz@yahoo.com]
> Sent: Saturday, January 12, 2002 8:54 PM
> To: XSL-List@lists.mulberrytech.com
> Subject: [xsl] Trouble writing .xsl
>
>
> Hello,
>
> I've just recently begun using xslt and I'm kind of
> stuck on something pretty simple. I've worked
> through
> parts of a couple of tutorials but I still can't
> seem
> to handle this problem. I'd like to convert (for
> example) the following chunk of xml:
>
> <?xml version="1.0" encoding="UTF-8" ?>
> <XMI xmlns:ABC="org.jason">
> <XMI.content>
> <ABC:jason.Smith>
> <LL/>
> </ABC:jason.Smith>
> <Smith/>
> <XMI content>
> </XMI>
>
> to this chunk:
>
> <?xml version="1.0" encoding="UTF-8" ?>
> <XMI xmlns:ABC="org.jason">
> <XMI.content>
> <ABC:Smith>
> <LL/>
> </ABC:Smith>
> <Smith/>
> <XMI content>
> </XMI>
>
> In other words I want to replace each elament named
> jason.Smith with an identical element (ie not affect
> any of it's children or it's attributes) named Smith
> but only when It occurs in the Namespace ABC. I want
> all other elements in the output file to remain
> unchanged. I think I need to use the XPATH
> namespace(
> ) function in my match expression but I can't quite
> seem to get it to work. Any help with creating this
> stylesheet would be greatly appreciated. Thanks in
> advance!
>
> -Jason
>
> ps - What would a style sheet look like which
> created
> an output xml document identical to the source xml
> document?
>
> __________________________________________________
> Do You Yahoo!?
> Send FREE video emails in Yahoo! Mail!
> http://promo.yahoo.com/videomail/
>
> XSL-List info and archive:
> http://www.mulberrytech.com/xsl/xsl-list
>
>
> XSL-List info and archive:
> http://www.mulberrytech.com/xsl/xsl-list
>
Dan,
Thanks, this solved my problem (as I stated it)
perfectly. You're 8 lines of XPATH did what my 50
couldn't :) I guess there is a bit of a learning
curve. Still, I have one additional problem. I
realized that I didn't quite state my problem fully.
It's not suffiecent that I replace elements named
ABC:jason.Smith with elements named ABC:Smith, I've
also got to repace any elements whose names begin with
ABC:jason.Smith the elements whose names begin with
ABC:Smith while leaving the rest of the element name
unchanged.
For example, I've got to make the following changes
anywhere they occur in the document:
ABC:jason.Smith -> ABC:Smith
ABC:jason.Smith.foo -> ABC:Smith.foo
I've been playing with the starts-with( ) and
substring-after( ) functions but I can't get it to
work. If there is an easy solution you could share
with me it would be greatly appreciated. Thanks in
advance.
-Jason
__________________________________________________
Do You Yahoo!?
Send FREE video emails in Yahoo! Mail!
http://promo.yahoo.com/videomail/
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list