xsl-list
[Top] [All Lists]

Re: [xsl] Output fixed length records using mod operators to group results

2007-05-10 16:11:39

$ saxon po2.xml po3.xsl
                                                  
SHIPMENT  2                                       ;
PO        P000001   P000002                       ;
PO        P000003   P000004                       ;
CASE      1         2         3         5         ;
CASE      6         7         8         10        ;
CASE      11        12                            ;



<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
  
  <xsl:output method="text"/>

  
  <xsl:variable name="field" select=
                "'          '"/>
  <xsl:template match="asn">
    <xsl:text>&#10;SHIPMENT  </xsl:text>
    <xsl:value-of select="header/shipper/@value"/>
    <xsl:value-of  select="$field"/>
    <xsl:value-of select="substring($field, 
1+string-length(header/shipper/@value))"/>
    <xsl:for-each select="detail/line_item">
      <xsl:if test="position() mod 2 = 1">
        <xsl:value-of  select="$field"/>
        <xsl:value-of  select="$field"/>
        <xsl:text>;&#10;PO        </xsl:text>
      </xsl:if>
      <xsl:value-of select="@po"/>
      <xsl:value-of select="substring($field,1+string-length(@po))"/>
    </xsl:for-each>
    <xsl:value-of  select="$field"/>
    <xsl:value-of  select="$field"/>
    <xsl:for-each select="detail//container">
      <xsl:if test="position() mod 4 = 1">;&#10;CASE      </xsl:if>
      <xsl:value-of select="@serial_no"/>
      <xsl:value-of select="substring($field,1+string-length(@serial_no))"/>
      <xsl:if test="position()=last()">
        <xsl:for-each select="(//*)[position()&lt;= ((4000 -last() )mod 4)]">
          <xsl:value-of select="$field"/>
        </xsl:for-each>
      </xsl:if>
    </xsl:for-each>
    <xsl:text>;&#10;</xsl:text>
  </xsl:template>
</xsl:stylesheet>

________________________________________________________________________
The Numerical Algorithms Group Ltd is a company registered in England
and Wales with company number 1249803. The registered office is:
Wilkinson House, Jordan Hill Road, Oxford OX2 8DR, United Kingdom.

This e-mail has been scanned for all viruses by Star. The service is
powered by MessageLabs. 
________________________________________________________________________

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--