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]