中国开发网: 论坛: 程序员情感CBD: 贴子 461200
老玉米
new edition
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output method="text"/>
<xsl:strip-space elements="COLUMN"/>

<xsl:template match="/TABLE">
<xsl:apply-templates select="SCENARIO/ROWS/ROW"/>
</xsl:template>

<xsl:template match="ROW">
<xsl:text>/TABLE/ROW</xsl:text>
<xsl:apply-templates select="ancestor::ROWS/preceding-sibling::COLUMNS/COLUMN"/>
<xsl:apply-templates select="COLUMN"/>
<xsl:text>
</xsl:text>
</xsl:template>

<xsl:template match="COLUMN">
<xsl:text>/COLUMN[@name='</xsl:text>
<xsl:value-of select="@name"/>
<xsl:text>' and </xsl:text>
<xsl:variable name="compare_type" select="@compare"/>
<xsl:choose>
<xsl:when test='$compare_type="equal"'>
<xsl:text>.='</xsl:text>
<xsl:value-of select="text()"/>
<xsl:text>'</xsl:text>
</xsl:when>
<xsl:when test='$compare_type="enumeration"'>
<xsl:text>(</xsl:text>
<xsl:apply-templates select="ENUMVALUE"/>
<xsl:text>)</xsl:text>
</xsl:when>
<xsl:when test='$compare_type="range"'>
<xsl:apply-templates select="*"/>
</xsl:when>
</xsl:choose>
<xsl:text>]/..</xsl:text>
</xsl:template>

<xsl:template match="ENUMVALUE">
<xsl:if test='position()>1'>
<xsl:text> or </xsl:text>
</xsl:if>
<xsl:text>.='</xsl:text>
<xsl:value-of select="text()"/>
<xsl:text>'</xsl:text>
</xsl:template>

<xsl:template match="STARTVALUE">
<xsl:call-template name="comparison">
<xsl:with-param name="comparison_operators">&gt;=</xsl:with-param>
</xsl:call-template>
</xsl:template>

<xsl:template match="ENDVALUE">
<xsl:call-template name="comparison">
<xsl:with-param name="comparison_operators">&lt;=</xsl:with-param>
</xsl:call-template>
</xsl:template>

<xsl:template name="comparison">
<xsl:param name="comparison_operators"/>
<xsl:if test='position()>1'>
<xsl:text> and </xsl:text>
</xsl:if>
<xsl:text>.</xsl:text>
<xsl:value-of select="$comparison_operators"/>
<xsl:value-of select="text()"/>
</xsl:template>

</xsl:stylesheet>

相关信息:


欢迎光临本社区,您还没有登录,不能发贴子。请在 这里登录