aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorJeremias Maerki <jeremias@apache.org>2005-01-24 10:44:47 +0000
committerJeremias Maerki <jeremias@apache.org>2005-01-24 10:44:47 +0000
commit41b3fa515195b493671f46e662c9f10b8bf0345b (patch)
tree8cc5a4d28997adf03217f4020a524870bb671c99 /test
parent33f13f760cf59db33cd18fdbe265c39c99580443 (diff)
downloadxmlgraphics-fop-41b3fa515195b493671f46e662c9f10b8bf0345b.tar.gz
xmlgraphics-fop-41b3fa515195b493671f46e662c9f10b8bf0345b.zip
Variable substitution inside tests.
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@198304 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'test')
-rw-r--r--test/layoutengine/testcase2fo.xsl39
1 files changed, 37 insertions, 2 deletions
diff --git a/test/layoutengine/testcase2fo.xsl b/test/layoutengine/testcase2fo.xsl
index cb4edb9ae..2cc701077 100644
--- a/test/layoutengine/testcase2fo.xsl
+++ b/test/layoutengine/testcase2fo.xsl
@@ -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>