XML Editor
Sign up for a WebBoard account Sign Up Keyword Search Search More Options... Options
Chat Rooms Chat Help Help News News Log in to WebBoard Log in Not Logged in
Show tree view Topic
Topic Page 1 2 3 4 5 6 7 8 9 Go to previous topicPrev TopicGo to next topicNext Topic
Postnext
Dominic ParkerSubject: Using the translate() function
Author: Dominic Parker
Date: 30 Nov 2005 03:14 PM
Hi,
I am quite new to XSLT and new to forum!

I would like to use the translate() function to change every occurance of the word 'in' to the word 'out' in every element tag and attribute.

The source document is irrelavent, as I'd like it work with any source document that is given.
I'm sure this is quite an easy task, but I am at a loss!

Any help is greatly appreciated.

Thanks,
Dom.

Postnext
(Deleted User) Subject: Using the translate() function
Author: (Deleted User)
Date: 30 Nov 2005 03:47 PM
Dominic,

I am sad to say that the translate() function will not help you. It is designed to do single character substitutions, for example:
translate($input, 'in', 'out') will convert every 'i' character to an 'o' and every 'n' character to a 'u'.

If you can use an XSLT 2.0 processor (Saxon 8), then it has a builtin replace() function which should do what you need. Saxon 8 is available within Stylus Studio and is also available separately as freeware.

If Saxon 8 is not an option, you could use the str:replace() function available publicly. See:
http://www.exslt.org/str/functions/replace/index.html.

Finally, there is always Java...

Good luck,
Clyde

Postnext
Dominic ParkerSubject: Using the translate() function
Author: Dominic Parker
Date: 30 Nov 2005 04:03 PM
Originally Posted: 30 Nov 2005 04:04 PM
Ahh no worries, in that case, I'd just like to change every occurance of 'i' to 'o'

If someone could point me in the right direction of doing this, that would be fantastic

Thanks,
Dom.

Postnext
David KarrSubject: RE: Using the translate() function
Author: David Karr
Date: 30 Nov 2005 05:16 PM
What processor are you using? If you're using Java and Xalan, it should
be straightforward to implement the "regexp:match" function and then
replace the found strings. I recently wrote an implementation of
"regexp:match, but I didn't test it in a situation like yours.

> -----Original Message-----
> From: stylus-studio-xslt Listmanager
> [mailto:stylus-studio-xslt.listmanager@stylusstudio.com]
> Sent: Wednesday, November 30, 2005 12:18 PM
> Subject: Using the translate() function
>
>
> From: "Dominic Parker"
>
> Hi,
> I am quite new to XSLT and new to forum!
>
> I would like to use the translate() function to change every
> occurance of the word 'in' to the word 'out' in every element
> tag and attribute.
>
> The source document is irrelavent, as I'd like it work with
> any source document that is given.
> I'm sure this is quite an easy task, but I am at a loss!
>
> Any help is greatly appreciated.
>
> Thanks,
> Dom.
>
>
> --
> To reply: mailto:stylus-studio-xslt.12858@stylusstudio.com
> To start a new topic: mailto:stylus-studio-xslt@stylusstudio.com
> To login: http://www.stylusstudio.com/SSDN/
> To (un)subscribe:
> mailto:stylus-studio-xslt.list-request@stylusstudio.com
>
>

Postnext
Dominic ParkerSubject: RE: Using the translate() function
Author: Dominic Parker
Date: 30 Nov 2005 07:14 PM
I'm just using a text editor to write the xsl and linking it to my xml file, and using firefox to render.

Dom.

Postnext
(Deleted User) Subject: RE: Using the translate() function
Author: (Deleted User)
Date: 30 Nov 2005 07:29 PM
Dominic,

Are you asking how to structure the .xslt file overall?
It is kind of complicated if you want to preserve all namespace information, processing instructions, comments, etc, but you just asked to be pointed in the right direction, so try this.
This stylesheet copies almost everything except namespaces on attributes.

Is this what you were looking for?
Clyde

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<!-- Start the whole thing going -->
<xsl:template match="/">
<xsl:apply-templates select="@*|node()"/>
</xsl:template>

<!-- Translate each attribute value by creating a new attribute -->
<xsl:template match="@*">
<xsl:attribute name="{local-name(.)}">
<xsl:value-of select="translate(., 'i', 'o')"/>
</xsl:attribute>
</xsl:template>

<!-- Translate each text node -->
<xsl:template match="text()">
<xsl:value-of select="translate(., 'i', 'o')"/>
</xsl:template>

<!-- copy everything else unchanged, and recurse -->
<xsl:template match="*|comment()|processing-instruction()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>

</xsl:stylesheet>

Postnext
Dominic ParkerSubject: RE: Using the translate() function
Author: Dominic Parker
Date: 30 Nov 2005 08:46 PM
Yes that was nearly it, ive modified it and got it now, thanks to your help.


Cheers!
Dom.

Posttop
Tony LavinioSubject: RE: Using the translate() function
Author: Tony Lavinio
Date: 01 Dec 2005 12:10 PM
I saw from your earlier post that you are just "using a text editor to
write the xsl and linking it to my xml file"

Since this is the support forum for Stylus Studio, how about at least
downloading a copy from http://www.stylusstudio.com/xml_download.html
and giving it a test-spin for a few days?

 
Topic Page 1 2 3 4 5 6 7 8 9 Go to previous topicPrev TopicGo to next topicNext Topic
Download A Free Trial of Stylus Studio 6 XML Professional Edition Today! Powered by Stylus Studio, the world's leading XML IDE for XML, XSLT, XQuery, XML Schema, DTD, XPath, WSDL, XHTML, SQL/XML, and XML Mapping!  
go

Log In Options

Site Map | Privacy Policy | Terms of Use | Trademarks
Stylus Scoop XML Newsletter:
W3C Member
Stylus Studio® and DataDirect XQuery ™are from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2016 All Rights Reserved.