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