XSL。在字符串

时间:2016-07-13 07:23:45

标签: java xslt

这是我的XSL:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="RSA-InsurerID"/>
<xsl:param name="RSA-schema-version"/>

<xsl:template match="/">
    <rsa:DriverStatusRequest xmlns:rsa="com/rsa/eosago/schema-"
                             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <InsurerID>
            <xsl:value-of select="$RSA-InsurerID"
                          xmlns:ns2="com/rsa/eosago/schema-"/>
        </InsurerID>
        <IDCheckDriver>
            <xsl:value-of select="ns2:DriverResponse/IDCheckDriver"
                          xmlns:ns2="com/rsa/eosago/schema-"/>
        </IDCheckDriver>
    </rsa:DriverStatusRequest>
</xsl:template>

这两个参数值通过Apache Camel传递。

问题是如何传递和连接参数 <xsl:param name="RSA-schema-version"/>xmlns:rsa="com/rsa/eosago/schema-"

我使用<xsl:param name="RSA-InsurerID"/>获取了<xsl:value-of select="$RSA-InsurerID",但我不知道如何将其传递给值文本。

我期待这个输出:

<?xml version="1.0" encoding="UTF-8"?>
<rsa:DriverStatusRequest xmlns:rsa="com/rsa/eosago/schema-1.2" 
                     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<InsurerID>18800000</InsurerID>
<IDCheckDriver/>
</rsa:DriverStatusRequest>

非常感谢!

2 个答案:

答案 0 :(得分:0)

尝试

<InsurerID>
            <xsl:value-of select="$RSA-InsurerID"
                          xmlns:ns2="com/rsa/eosago/schema-{$RSA-schema-version}"/>

答案 1 :(得分:0)

似乎您尝试执行的操作是在运行时动态生成命名空间。 例如,请查看thisthis个答案。 并尝试:

<xsl:template match="/">
    <xsl:element name="rsa:DriverStatusRequest" namespace="com/rsa/eosago/schema-{$RSA-schema-version}" >
        <InsurerID>
            <xsl:value-of select="$RSA-InsurerID" />
        </InsurerID>
    </xsl:element>
</xsl:template>

将生成:

<rsa:DriverStatusRequest xmlns:rsa="com/rsa/eosago/schema-1.2">
    <InsurerID>18800000</InsurerID>
</rsa:DriverStatusRequest>

但我认为会有更多问题出现。