任何人都可以通过执行转换二进制操作建议我如何获得以下输出:
以下是我的意见:
STRTYP=HD&STRNBR=0121&PSTLCD=776&MDLNBR=FFGC3010QS
我必须得到所需的输出:
<ROOT>
<STRTYP>HD</STRTYP>
<STRTYP>0121</STRTYP>
<STRTYP>776</STRTYP>
<STRTYP>FFGC3010QS</STRTYP>
</ROOT>
我尝试过使用商店中的FFD文件:///pkcs7-convert-input.ffd 但我仍然没有得到上述输出.. 请纠正我在xslt中出错的地方。
这是我的XSLT:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:dp="http://www.datapower.com/extensions" extension-element-prefixes="dp">
<xsl:output method="xml" indent="yes" />
<xsl:strip-space elements="*" />
<dp:input-mapping href="store:///pkcs7-convert-input.ffd" type="ffd" />
<xsl:template match="/">
<ROOT>
<STRTYP>
<xsl:copy-of select="." />
</STRTYP>
</ROOT>
</xsl:template>
<xsl:template match="args/arg">
<STRTYP>
<xsl:apply-templates select="node() | @*" />
</STRTYP>
</xsl:template>
<xsl:template match="/*">
<ROOT>
<xsl:apply-templates select="node() | @*" />
</ROOT>
</xsl:template>
<xsl:template match="node() | @*" name="identity">
<xsl:copy>
<xsl:apply-templates select="node() | @*" />
</xsl:copy>
</xsl:template>
<xsl:template match="url" />
<xsl:template match="base-url" />
<xsl:template match="args">
<xsl:apply-templates select="node() | @*" />
</xsl:template>
<xsl:template match="@*" />
</xsl:stylesheet>
答案 0 :(得分:0)
您的代码有:
<xsl:template match="/"> <ROOT> <STRTYP> <xsl:copy-of select="." /> </STRTYP> </ROOT> </xsl:template>
由于您使用xsl:copy-of
,因此不会对其他模板进行进一步处理,因为在根节点匹配时(即最开始时)会调用指令副本。
如果我暂时假设当前输出看起来像输入,这意味着您已正确配置dp:output-mapping
,那么您需要做的就是查看更改并查看应用的其他模板(如果匹配),是用xsl:copy-of
替换xsl:apply-templates
。
答案 1 :(得分:0)
您只需通过数据电源配置即可实现此目的。您正在使用不正确的操作'Transform Binary'来实现此目的。而是在数据电源中使用“将查询参数转换为XML”。您将自动获得所需的输出。