我有一个需求,我需要使用存储为 XSLT 参数的节点集将一个 XML 文档转换为另一个文档。
输入:
<m:addCustomer xmlns:p="http://test.org"/>
预期输出格式:
<m:addCustomer xmlns:p="http://test.org"/>
<m:e1>some_value1</m:e1>
<m:e2>some_value2</m:e2>
<m:e3>some_value3</m:e3>
</m:addCustomer>
我面临的问题是,我可以传递“预期输出”格式的内容的唯一方法是通过 XSLT 参数,如下所示。
<xsl:param name="testParam" xmlns:m="http://test.org">
<m:customerData>
<m:e1>some_value1</m:e1>
<m:e2>some_value2</m:e2>
<m:e3>some_value3</m:e3>
</m:customerData>
</xsl:param>
到目前为止,我已经尝试了以下 XSLT 配置,但没有任何成功。
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="utf-8" indent="no"/>
<xsl:param name="testParam">
<![CDATA[<m:customerData xmlns:m="http://cclk.lk">
<m:e1>dfdf</m:e1>
<m:e2>dfdf</m:e2>
<m:e3>dfdf</m:e3></m:customer>]]>
</xsl:param>
<xsl:template match="/" xmlns:m="http://cclk.lk">
<m:addCustomer>
<xsl:value-of select="$testParam" disable-output-escaping="yes"/>
<xsl:apply-templates select="m:customerData"/>
</m:addCustomer>
</xsl:template>
<xsl:template match="m:customerData" xmlns:m="http://cclk.lk">
<m:addUser>
<xsl:for-each select="m:customer/*">
<m:e1>
<xsl:value-of select="e1"/>
</m:e1>
<m:e2>
<xsl:value-of select="e2"/>
</m:e2>
<m:e3>
<xsl:value-of select="e3"/>
</m:e3>
</xsl:for-each>
</m:addUser>
</xsl:template>
</xsl:stylesheet>
目前我无法找到一种方法来做到这一点。感谢您对此的任何帮助。
问候, 普拉巴斯