Hi,
the problem is here

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
      xmlns:fo="http://www.w3.org/1999/XSL/Format";>
        <xsl:variable name="border" select="'1pt'"/>
        <xsl:variable name="border-style" select="'solid'"/>
        <xsl:output method="xml" indent="yes"/>
        <xsl:template match="/">
            <fo:root>
                <fo:layout-master-set>
                        <fo:simple-page-master master-name="A4-portrait"
                        page-height="29.7cm" page-width="21.0cm"
margin="2cm">
                                <fo:region-body/>
                        </fo:simple-page-master>
                </fo:layout-master-set>
                <fo:page-sequence master-reference="A4-portrait"
font-size="10pt">
                        <fo:flow flow-name="xsl-region-body">
                               <fo:block space-before="4mm">
                                      <xsl:apply-templates
select="appendix-xml" />
                               </fo:block>
                        </fo:flow>
                </fo:page-sequence>
            </fo:root>
        </xsl:template>

        <xsl:template match="appendix-xml">
                <xsl:for-each select="node()">
                        <xsl:apply-templates select="." />
                </xsl:for-each>
        </xsl:template>
        <xsl:template match="table">
                <xsl:variable name="border"><xsl:value-of
select="@border"/></xsl:variable>
                <xsl:variable name="border-style"><xsl:value-of
select="@border-style"/></xsl:variable>
                <fo:table table-layout="fixed" width="100%"
border-style="{$border-style}" border-color="black"
border-width="{$border}">
                        <fo:table-column column-width="{...@col1}"/>
                        <fo:table-column column-width="{...@col2}"/>
                        <fo:table-body>
                                <xsl:for-each select="node()">
                                        <xsl:apply-templates select=".">
                                                <xsl:with-param
name="border-style" select="../@border-style"/>
                                        </xsl:apply-templates>
                                </xsl:for-each>
                        </fo:table-body>
                </fo:table>
        </xsl:template>
        <xsl:template match="row">
                <xsl:param name="border-style" select="'solid'"/>
                <fo:table-row>
                        <xsl:for-each select="node()">
                                <xsl:apply-templates select=".">
                                        <xsl:with-param name="border-style"
select="$border-style"/>
                                </xsl:apply-templates>
                        </xsl:for-each>
                </fo:table-row>
        </xsl:template>
        <xsl:template match="cell">
                <xsl:param name="border-style" select="'solid'"/>
                <xsl:call-template name="output-cell-and-contents">
<!-- THIS BIT ONLY DOES NOT WORK -->
                        <xsl:with-param name="border-style">
                                <xsl:call-template name="get_param">            
                            
<xsl:with-param name="param" select="$border-style"/>                           
     
</xsl:call-template>
                        </xsl:with-param>
<!-- ABOVE DOES NOT WORK -->
                        <xsl:with-param name="node" select="."/>
               </xsl:call-template>
        </xsl:template>
        <xsl:template name="get_param">
                <xsl:param name="param" select="'solid'"/>
                <xsl:choose>
                        <xsl:when test="string-length($param)=0">
                                <xsl:text>solid</xsl:text>
                        </xsl:when>
                        <xsl:otherwise>
                                <xsl:value-of select="$param"/>
                        </xsl:otherwise>
                </xsl:choose>
        </xsl:template>
        <xsl:template name="output-cell-and-contents">
                <xsl:param name="border-style" select="'solid'"/>
                <xsl:param name="node"/>
                <fo:table-cell border-style="{$border-style}"
border-color="black" border-width="1">
                        <fo:block>
                                <xsl:for-each select="node()">
                                        <xsl:apply-templates select="."/>
                                </xsl:for-each>
                        </fo:block>
                </fo:table-cell>
        </xsl:template>
        <xsl:template match="checkbox">
                <fo:inline border-style="solid" border-color="black"
background-color="#CCCCCC">
                        <xsl:text>***</xsl:text>
                </fo:inline>
                <xsl:text>***</xsl:text>
        </xsl:template>
</xsl:stylesheet> 


Fabio






u671296 wrote:
> 
> Hi,
> 
> I'm a FOP/XSL newbie, so please spell out any response. Thanks.
> 
> My problem is that I want to produce a PDF document from some XML. I'm
> using FOP to do this and the problem I have may be XSL related, so my
> apologies if this is the wrong forum to use. If an XSL forum is the place
> to go could you please advise which one. I've already tried Dev Shed with
> no luck.
> 
> There may also be a better way for me to solve this problem, I'm sure !
> 
> My XML can contain optional attributes for tables, things like
> border-width, border-style etc. I need to supply default values if the
> attribute does not exist and as there could be many optional parameters I
> don't want to use XSL:choose statements to cope with the variations.
> 
> Instead I'm trying to use a get_params template to see what parameter is
> in question, return the value of the supplied attribute else the default
> which is then used in a with_params statement. The code below is a cludge
> to try and get it working for one attribute (border-style) only.
> 
> With the xml & code below I get the following error (from FOP) at the
> marked location:
> xsl:with-param is not allowed in this position in the stylesheet!
> 
> XML
> 
> <appendix-xml>
>         <table border-style="solid" col1="50%" col2="50%">
>                 <row>
>                         <cell><checkbox/> On site at a XX location using
> XX approved equipment and local XX network</cell><cell><checkbox/> Non-XX
> secure location, XX approved equipment, direct connection to XX network,
> no direct connections to any other network</cell>
>                 </row>
>                 <row>
>                         <cell><checkbox/> Remote VPN access to XX systems
> for 3rd parties using non-XX PCs</cell><cell><checkbox/> VPN for XXX
> access only</cell>
>                 </row>
>                 <row>
>                         <cell><checkbox/> Citrix
> access</cell><cell><checkbox/> Other: Please specify:</cell>
>                 </row>
>         </table>
> </appendix-xml>
> 
> 
> XSL
> 
> <?xml version="1.0" encoding="utf-8"?>
> <xsl:stylesheet version="1.0"
>       xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
>       xmlns:fo="http://www.w3.org/1999/XSL/Format";>
>         <xsl:variable name="border" select="'1pt'"/>
>         <xsl:variable name="border-style" select="'solid'"/>
>         <xsl:output method="xml" indent="yes"/>
>         <xsl:template match="/">
>             <fo:root>
>                 <fo:layout-master-set>
>                         <fo:simple-page-master master-name="A4-portrait"
>                         page-height="29.7cm" page-width="21.0cm"
> margin="2cm">
>                                 <fo:region-body/>
>                         </fo:simple-page-master>
>                 </fo:layout-master-set>
>                 <fo:page-sequence master-reference="A4-portrait"
> font-size="10pt">
>                         <fo:flow flow-name="xsl-region-body">
>                                <fo:block space-before="4mm">
>                                       <xsl:apply-templates
> select="appendix-xml" />
>                                </fo:block>
>                         </fo:flow>
>                 </fo:page-sequence>
>             </fo:root>
>         </xsl:template>
> 
>         <xsl:template match="appendix-xml">
>                 <xsl:for-each select="node()">
>                         <xsl:apply-templates select="." />
>                 </xsl:for-each>
>         </xsl:template>
>         <xsl:template match="table">
>                 <xsl:variable name="border"><xsl:value-of
> select="@border"/></xsl:variable>
>                 <xsl:variable name="border-style"><xsl:value-of
> select="@border-style"/></xsl:variable>
>                 <fo:table table-layout="fixed" width="100%"
> border-style="{$border-style}" border-color="black"
> border-width="{$border}">
>                         <fo:table-column column-width="{...@col1}"/>
>                         <fo:table-column column-width="{...@col2}"/>
>                         <fo:table-body>
>                                 <xsl:for-each select="node()">
>                                         <xsl:apply-templates select=".">
>                                                 <xsl:with-param
> name="border-style" select="../@border-style"/>
>                                         </xsl:apply-templates>
>                                 </xsl:for-each>
>                         </fo:table-body>
>                 </fo:table>
>         </xsl:template>
>         <xsl:template match="row">
>                 <xsl:param name="border-style" select="'solid'"/>
>                 <fo:table-row>
>                         <xsl:for-each select="node()">
>                                 <xsl:apply-templates select=".">
>                                         <xsl:with-param
> name="border-style" select="$border-style"/>
>                                 </xsl:apply-templates>
>                         </xsl:for-each>
>                 </fo:table-row>
>         </xsl:template>
>         <xsl:template match="cell">
>                 <xsl:param name="border-style" select="'solid'"/>
>                 <xsl:call-template name="output-cell-and-contents">
> <!-- THIS BIT ONLY DOES NOT WORK -->
>                         <xsl:with-param name="border-style">
>                                 <xsl:call-template name="get_param"/>
>                                         <xsl:with-param name="param"
> select="$border-style"/>
>                                 </xsl:call-template>
>                         </xsl:with-param>
> <!-- ABOVE DOES NOT WORK -->
>                         <xsl:with-param name="node" select="."/>
>                </xsl:call-template>
>         </xsl:template>
>         <xsl:template name="get_param">
>                 <xsl:param name="param" select="'solid'"/>
>                 <xsl:choose>
>                         <xsl:when test="string-length($param)=0">
>                                 <xsl:text>solid</xsl:text>
>                         </xsl:when>
>                         <xsl:otherwise>
>                                 <xsl:value-of select="$param"/>
>                         </xsl:otherwise>
>                 </xsl:choose>
>         </xsl:template>
>         <xsl:template name="output-cell-and-contents">
>                 <xsl:param name="border-style" select="'solid'"/>
>                 <xsl:param name="node"/>
>                 <fo:table-cell border-style="{$border-style}"
> border-color="black" border-width="1">
>                         <fo:block>
>                                 <xsl:for-each select="node()">
>                                         <xsl:apply-templates select="."/>
>                                 </xsl:for-each>
>                         </fo:block>
>                 </fo:table-cell>
>         </xsl:template>
>         <xsl:template match="checkbox">
>                 <fo:inline border-style="solid" border-color="black"
> background-color="#CCCCCC">
>                         <xsl:text>***</xsl:text>
>                 </fo:inline>
>                 <xsl:text>***</xsl:text>
>         </xsl:template>
> </xsl:stylesheet>
> 
> Thanks for your help.....
> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/Optional-XML-attributes---default-values-tp22499881p22500077.html
Sent from the FOP - Users mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to