像这样的行
<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"/>
答案 0 :(得分:0)
如果你放弃&lt; xsl:choose&gt;并用与xml中相同的数据替换它,你可以做这样的事情......
<xsl:variable name="map">
<db databaseSystem='DB2'>
<type name="VARCHAR_S">varchar(64)</type>
<type name="VARCHAR_M">varchar(255)</type>
<type name="VARCHAR_B">varchar(400)</type>
<type name="INTEGER">integer</type>
</db>
<db databaseSystem='Informix'>
<type name="VARCHAR_S">varchar(64)</type>
<type name="VARCHAR_M">varchar(255)</type>
<type name="VARCHAR_B">varchar(400)</type>
<type name="INTEGER">integer</type>
</db>
</xsl:variable>
然后您可以像这样选择值......
<xsl:value-of select="$map/db[@databaseSystem='DB2']/type[@name='VARCHAR_M']"/>
Clerly你不会使用固定字符串,并且在你自己的代码中,你将用变量或对你的的引用替换'DB2'和'VARCHAR_M'“像这样的行”输入