XSL:使用xml属性值访问变量值

时间:2016-06-25 12:21:59

标签: xml xslt

像这样的行

<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"/>

1 个答案:

答案 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'“像这样的行”输入