diff options
author | Jeremias Maerki <jeremias@apache.org> | 2005-01-24 10:44:47 +0000 |
---|---|---|
committer | Jeremias Maerki <jeremias@apache.org> | 2005-01-24 10:44:47 +0000 |
commit | 41b3fa515195b493671f46e662c9f10b8bf0345b (patch) | |
tree | 8cc5a4d28997adf03217f4020a524870bb671c99 /test | |
parent | 33f13f760cf59db33cd18fdbe265c39c99580443 (diff) | |
download | xmlgraphics-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.xsl | 39 |
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> |