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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to