【发布时间】:2016-10-27 23:08:17
【问题描述】:
有这样的线条
<COLUMN name="CATEGORY_" type="VARCHAR_M"/>
在我的 XML 文件中。 在 xlst 文件的帮助下,我想用依赖于数据库的数据类型替换 VARCHAR_M。 所以我设置了
<xsl:choose>
<xsl:when test="$DatabaseSystem = 'DB2'">
<xsl:variable name="VARCHAR_S" select="'varchar(64)'"/>
<xsl:variable name="VARCHAR_M" select="'varchar(255)'"/>
<xsl:variable name="VARCHAR_B" select="'varchar(4000)'"/>
<xsl:variable name="INTEGER" select="'integer'"/>
</xsl:when>
<xsl:when test="$DatabaseSystem = 'Informix'">
<xsl:variable name="VARCHAR_S" select="'varchar(64)'"/>
<xsl:variable name="VARCHAR_M" select="'varchar(255)'"/>
<xsl:variable name="VARCHAR_B" select="'lvarchar(4000)'"/>
<xsl:variable name="INTEGER" select="'integer'"/>
</xsl:when>
</xsl:choose>
这个
<xsl:value-of select="@type"/>
从 xml 中给我属性的值,我如何使用它作为变量的名称?
类似
<xsl:value-of select="$@type"/>
.
【问题讨论】:
-
我认为您将不得不选择一种不同的方法,您的变量仅在
xsl:when内部定义,因此您甚至无法在外部访问它们。并且动态 XPath 评估不是 XSLT 1.0 和 2.0 中语言的一部分。您可能希望将值存储在 XML 结构中,然后从该结构中进行选择(您可能需要exsl:node-set或 XSLT 1.0 中的类似内容),这样您就可以选择值。 -
"我想用依赖于数据库的数据类型替换 VARCHAR_M。" 我在您的代码中看不到任何会导致这种情况的内容。我建议你解释一下这里需要应用的逻辑(带有更完整的输入示例)。目前,这似乎是XY question。