以下は私のオリジナルの XSL テンプレートです。
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:n="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ns1="http://webservice_product/helloworld"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="ns1:sayHello">
<ns1:sayHello xsi:type="ns698:Product" xmlns:ns698="urn:objects.prodcuts.com">
<xsl:apply-templates select="@* | node()"/>
</ns1:sayHello>
</xsl:template>
</xsl:stylesheet>
上記の xsl で、 xsi:type="ns698:Product" 値をパラメータ化したいと思います。以下のように-
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:n="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ns1="http://webservice_product/helloworld"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<xsl:variable name="name" select='"Product"' />
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="ns1:sayHello">
<ns1:sayHello xsi:type="ns698:$name" xmlns:ns698="urn:objects.prodcuts.com">
<xsl:apply-templates select="@* | node()"/>
</ns1:sayHello>
</xsl:template>
</xsl:stylesheet>
しかし、これは機能していません。がんばった。