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