This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Converting XML to Fixed Length Text Data


David, I tried using the template you showed me, but I got output such as

aChild
anotherChild
yetAnotherChild

instead of the positions specified in Problem below

1) Can you provide full details for at least one element and one attribute?

2) What happens if one of the elements is optional and not passed on the 
source xml file? Wouldn't this throw off the position of the fields which 
follow?  ( e.g. if child2 was not on the source xml file, what impact would 
this have on the output? )

<<<< Solution >>>>>>>>>>

Solution: ( David's response )
<xsl:variable name="pad1" select="'       '"/>

<xsl:template match="child1">
<xsl:value-of select="."/>
<xsl:value-of select="substring($child1,string-length(.))"/>
</xsl:template>

and similarly the other children. (This doesn't do any error checking
for over-run, although that could be added.)

David

<<<<<Problem >>>>>>>>>>>>>
Problem:
Ladies and Gents, I need some guidance .  I searched the archives and found
some info but it was not sufficient. Basically I want to convert an xml file
to a fixed length data file.  The following is a sample of what I am trying
to do

Position of data for output file:
field: child1     start 1    length 7
field: att1       start 12   length 5
field: child2     start 27   length 12
field: child3     start 39   length 15
field: att2       start 56   length 3

Input:
<parent att1="foo">
<child1>aChild</child1>
<child2>anotherChild</child2>
<child3 att2="bar">yetAnotherChild</child3>
</parent>

Output:
aChild     foo            anotherChildyetAnotherChild  bar


Thanking you in advance for the info

Garvin Franco
garvin_franco@hotmail.com


>From: David Carlisle <davidc@nag.co.uk>
>Reply-To: xsl-list@lists.mulberrytech.com
>To: xsl-list@lists.mulberrytech.com
>Subject: Re: [xsl] Converting XML to Fixed Length Text Data
>Date: Mon, 25 Mar 2002 21:28:28 GMT
>
>   David thanks for the response, but I am not quite clear on the solution.
>   1) How does the attribute "att1" vs the element "child1" know where to
>   position themselves on the output file? Shouldn't positional info be
>   declared somewhere?
>it is "declared" by the length of the string variable declared for each
>field. If $child2 starts off as a string of 20 spaces and
>you do
><xsl:value-of select="."/>
><xsl:value-of select="substring($child2,string-length(.))"/>
>in the template for child2, then you will get the character data
>of the element followed by enough spaces to pad the total to 20
>characters (as long as the element had less than 20 characters)
>
>
>    2) What about the element <xsl:text>, is this not required?
>xsl:text is in favt never required, but here you don't need it as you
>are not adding any literal text, only some spaces, which you can enter
>with xsl:value-of.
>
>So apart from the template I showed, you just need the settings of the
>original strings to give the widths of each field, plus the template for
>teh parent element needs to give a line break after each row, which you
>can do with xsl:text (<xsl:text>
</xsl:text>) or value-of
>(<xsl:value-of select="'
'"/>)
>
>David
>
>_____________________________________________________________________
>This message has been checked for all known viruses by Star Internet
>delivered through the MessageLabs Virus Scanning Service. For further
>information visit http://www.star.net.uk/stats.asp or alternatively call
>Star Internet for details on the Virus Scanning Service.
>
>  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
>


_________________________________________________________________
Get your FREE download of MSN Explorer at http://explorer.msn.com/intl.asp.


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]