Browse Source

Variable substitution inside tests.


git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@198304 13f79535-47bb-0310-9956-ffa450edef68
tags/Root_Temp_KnuthStylePageBreaking
Jeremias Maerki 19 years ago
parent
commit
41b3fa5151
1 changed files with 37 additions and 2 deletions
  1. 37
    2
      test/layoutengine/testcase2fo.xsl

+ 37
- 2
test/layoutengine/testcase2fo.xsl View File

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

Loading…
Cancel
Save