xsl-list
[Top] [All Lists]

[xsl] again lookup table

2006-05-16 08:40:19
hi,
i'm using xslt 1.0 with apache fop 0.92.
i'm new to xslt / xsl-fo and until now everthing worked quite well, but 
this lookup table makes me desperate...

here the xml-source dakl.xml:

 <?xml version="1.0" encoding="ISO-8859-1"?>
 <seife>
  <at.sds.xc.reportService.ReportDaten>
  </at.sds.xc.reportService.ReportDaten>
  <at.sds.xc.positionsreports.DaklOutput>
    [...]
    <einzelPositionList arraySize="10">
         <element>
                <positionsDaten>
                        <positSaldoGilt>19998</positSaldoGilt> 
                        <positVerwahrart>WR</positVerwahrart> 
                        <positLoco>DE</positLoco> 
                        <positTyp>UPOS</positTyp> 
                        [...]
                 </positionsDaten>
                 <fiBezeichnungList arraySize="1">
                 [...]
                 </fiBezeichnungList>
         </element>
[9 similar elements following]

here the lookup xml SVZ_1001.xml:

<?xml version="1.0" encoding="ISO-8859-1" ?> 
- <getTables>
- <at.sds.xc.coreService.CodeTableList arraySize="1">
- <element>
  <codeTableNo>1001</codeTableNo> 
  <codeTableType>ALLG</codeTableType> 
  <codeTableName>code-table-name</codeTableName> 
- <codes arraySize="97">
- <element>
  <code>0000</code> 
  <hcode /> 
  <sysstatus>0</sysstatus> 
  <codeText>Wien</codeText> 
  </element>
- <element>
  <code>DE</code> 
  <hcode /> 
  <sysstatus>0</sysstatus> 
  <codeText>Deutschland</codeText> 
  </element>
[96 similar elements following]

here is part of my xsl:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="
http://www.w3.org/1999/XSL/Transform"; xmlns:fo="
http://www.w3.org/1999/XSL/Format";>
        <xsl:output method="xml" omit-xml-declaration="yes"/>
        [...]
        <xsl:variable name="leer"/>
        [...]
        <xsl:key name="loco-lookup" match="element" use="code"/>
        <xsl:variable name="loco-top" select="
document('SVZ_1001.xml')/codes"/> 

        <xsl:template match="/">
                <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format";>
                        [page master, calling of templates defined later 
in stylesheet]
                        <fo:block padding-before="1cm" font="Helvetica">
                                <xsl:call-template name="Posit"></
xsl:call-template>
                        </fo:block>
                        [...]
                </fo:root>
        </xsl:template>
        [definition of all templates called before]
        <xsl:template name="Posit">
                <xsl:choose>
                        <xsl:when test="//einzelPositionList">
                                <fo:table table-omit-header-at-break="
false" table-layout="fixed" border-collapse="separate" font-size="10pt" 
width="100%">
                                [table column definition, table header]
                                <fo:table-body>
                                        <xsl:for-each select="
//einzelPositionList/element">
                                        <xsl:if test="
./positionsDaten/positTyp != 'UPOS'">
                                        <fo:table-row keep-together="
always"> 
                                                <fo:table-cell>
                                                [...]
                                                </fo:table-cell>
                                                <fo:table-cell>
                                                [...]
                                                </fo:table-cell>
                                                <fo:table-cell>
                                                <fo:block>
                                                <fo:block padding-before="
3mm+10pt"><xsl:text> </xsl:text></fo:block>
                                                                <
xsl:choose>
                                                                        <
xsl:when test="./positionsDaten/fiTyp='DERI'">
 <fo:block  font-weight="bold">
        <xsl:value-of select="./positionsDaten/kurzbezeichnung"/>
 </fo:block>
                                                                        </
xsl:when>
                                                                        <
xsl:otherwise>
 <fo:block  font-weight="bold">
        <xsl:value-of select="./positionsDaten/bezeichnung1"/>
 </fo:block>
                                                                        </
xsl:otherwise>
                                                                </
xsl:choose>
 
                                                                <
xsl:choose>
                                                                        <
xsl:when test="./positionsDaten/fiTyp != 'DERI'">
 <fo:block>
        <xsl:value-of select="./positionsDaten/bezeichnung2"/>
 </fo:block>
                                                                        </
xsl:when>
                                                                </
xsl:choose>
 
                                                                <fo:block>
                                                                        <
xsl:if test="normalize-space(./positionsDaten/lfdKupon) != $leer">Kup. <
xsl:value-of select="./positionsDaten/lfdKupon"/>
 <xsl:text> </xsl:text>
                                                                        </
xsl:if>
                                                                        <
xsl:if test="normalize-space(./positionsDaten/zahlungsrhythmus) != $leer 
and normalize-space(./positionsDaten/endfaelligkeit) != $leer">
                                                                        <
xsl:text> / </xsl:text><xsl:value-of select="
./positionsDaten/zahlungsrhythmus"/>
                                                                        <
xsl:text> bis </xsl:text><xsl:value-of select="
./positionsDaten/endfaelligkeit"/>
                                                                </xsl:if>
                                                                </fo:block

                                                        <xsl:template 
match="positionsDaten">
                                                                <
xsl:apply-templates select="$loco-top">
                                                                        <
xsl:with-param name="curr-positionsDaten" select="."/>
                                                                </
xsl:apply-templates>
                                                        </xsl:template>
                                                        <xsl:template 
match="codes">
                                                                <xsl:param 
name="curr-positionsDaten"/>
                                                                <
xsl:value-of select="
key('loco-lookup',$curr-positionsDaten/positLoco)/codeText"/>
                                                        </xsl:template>
                                                </fo:block> 
                                                </fo:table-cell>
                                                [...]
when trying to transform my xml, fop says 'xsl:template ist an dieser 
Position der Formatvorlage nicht zulässig' (xsl:template is not allowed at 
this postion). i tried several approaches (also with help from the list) 
to resolve my lookup table, but until now none worked.

all i need is to extract the value of <codeText> in my lookup xml where 
<code> equals <positLoco> of my source xml... looks simple, but is tougher 
than i thought...
any suggestions?

THX
alex


______________________________________________________________________
Der Austausch von Nachrichten mit Software Daten Service via E-Mail dient 
ausschliesslich Informationszwecken. Rechtsgeschaeftliche Erklaerungen duerfen 
ueber dieses Medium nicht ausgetauscht werden.

Correspondence with Software Daten Service via e-mail is only for information 
purposes. This medium is not to be used for the exchange of legally-binding 
communications. 


--~------------------------------------------------------------------
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>
--~--

<Prev in Thread] Current Thread [Next in Thread>