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
Anthony BatemanSubject: Writing strings of characters at specified locations
Author: Anthony Bateman
Date: 27 Jan 2008 11:59 AM
I have a customer who wants to output several strings of characters in fixed offset positions, eg:

16 PCE 56412700244209

I have the three values in the input XML, but they have vraible lengths, eg first value may be 16, 162, 1739, etc. I must put spaces between the values to pack them to the correct offset.

Is this possible to do with XSL?

BR,

Tony.

Postnext
Tony LavinioSubject: Writing strings of characters at specified locations
Author: Tony Lavinio
Date: 27 Jan 2008 09:28 PM
You didn't state what the rule is for breaking the string.
Is it you want to break between the numbers and the embedded
alpha string?

If so, then this should work:

<xsl:template match="...put your expression here...">
<xsl:variable name="middle" select="translate(., '0123456789', '')"/>
<xsl:value-of select="substring-before(., $middle)"/>
<xsl:text> </xsl:text>
<xsl:value-of select="$middle"/>
<xsl:text> </xsl:text>
<xsl:value-of select="substring-after(., $middle)"/>
<xsl:text>&#xD;&#xA;</xsl:text>
</xsl:template>

Postnext
Anthony BatemanSubject: Writing strings of characters at specified locations
Author: Anthony Bateman
Date: 28 Jan 2008 01:50 AM
Hi,

Sorry if I didn't explain in enough detail; the string is to be composed of three different nodes of the input XML tree, but I have to specify the second as being at position 20 for example, with spaces between the end of the first part of the string and the start of the second.

BR,

Tony.

Posttop
James DurningSubject: Writing strings of characters at specified locations
Author: James Durning
Date: 28 Jan 2008 09:37 AM
I can think of one way. Assuming your values are in value1, value2, and value3 accordingly:

<xsl:variable name="spaces" select="' '"/><!-- at least as big as the greatest length (NOTE, this forum has truncated the spaces to a single space) -->
<xsl:variable name="length1" select="20"/>
<xsl:variable name="length2" select="10"/>
<xsl:variable name="length3" select="40"/>

<xsl:value-of select="concat(value1, substring($spaces, 1, $length1 - string-length(value1))"/>
<xsl:value-of select="concat(value2, substring($spaces, 1, $length2 - string-length(value2))"/>
<xsl:value-of select="concat(value3, substring($spaces, 1, $length3 - string-length(value3))"/>

Would add as many spaces as are needed to fill up the length.

 
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.