You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-commits@xmlgraphics.apache.org by je...@apache.org on 2005/01/24 11:44:47 UTC

cvs commit: xml-fop/test/layoutengine testcase2fo.xsl

jeremias    2005/01/24 02:44:47

  Modified:    test/layoutengine testcase2fo.xsl
  Log:
  Variable substitution inside tests.
  
  Revision  Changes    Path
  1.2       +38 -3     xml-fop/test/layoutengine/testcase2fo.xsl
  
  Index: testcase2fo.xsl
  ===================================================================
  RCS file: /home/cvs/xml-fop/test/layoutengine/testcase2fo.xsl,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- testcase2fo.xsl	5 Jan 2005 21:14:22 -0000	1.1
  +++ testcase2fo.xsl	24 Jan 2005 10:44:47 -0000	1.2
  @@ -16,15 +16,50 @@
   -->
   <!-- $Id$ -->
   <!-- This stylesheet extracts the FO part from the testcase so it can be passed to FOP for layout. -->
  +<!--
  +Variable substitution:
  +
  +For any attribute value that starts with a "##" the stylesheet looks for an element with the variable 
  +name under /testcase/variables, ex. "##img" looks for /testcase/variables/img and uses its element
  +value as subsitution value.
  +-->
   <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
   
     <xsl:template match="testcase">
       <xsl:apply-templates select="fo/*" mode="copy"/>
     </xsl:template>
  -
  -  <xsl:template match="node()|@*" mode="copy">
  +  
  +  <xsl:template match="node()" mode="copy">
       <xsl:copy>
         <xsl:apply-templates select="@*|node()" mode="copy"/>
       </xsl:copy>
  +  </xsl:template>
  +  
  +  <xsl:template match="@*" mode="copy">
  +    <xsl:choose>
  +      <xsl:when test="starts-with(., '##')">
  +        <!-- variable substitution -->
  +        <xsl:variable name="nodename" select="name()"/>
  +        <xsl:variable name="varname" select="substring(., 3)"/>
  +        <xsl:choose>
  +          <xsl:when test="boolean(//variables/child::*[local-name() = $varname])">
  +            <xsl:attribute name="{name(.)}">
  +              <xsl:value-of select="//variables/child::*[local-name() = $varname]"/>
  +            </xsl:attribute>
  +          </xsl:when>
  +          <xsl:otherwise>
  +            <!-- if variable isn't defined, just copy -->
  +            <xsl:copy>
  +              <xsl:apply-templates select="node()" mode="copy"/>
  +            </xsl:copy>
  +          </xsl:otherwise>
  +        </xsl:choose>
  +      </xsl:when>
  +      <xsl:otherwise>
  +        <xsl:copy>
  +          <xsl:apply-templates select="node()" mode="copy"/>
  +        </xsl:copy>
  +      </xsl:otherwise>
  +    </xsl:choose>
     </xsl:template>
   </xsl:stylesheet>
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: fop-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: fop-cvs-help@xml.apache.org