如何使用xslt反序列化datapower中的数据,xslt由dp:serialize扩展元素序列化



下面是xml输入:

<?xml version="1.0" encoding="utf-8"?>
<Message>Hello</Message>

我正在使用dp:serialize元素序列化上面的xml,如下所示

<xsl:template match="/">
<xsl:variable name="input">
<dp:serialize select="/" omit-xml-decl="yes"/>
</xsl:variable>
</xsl:template>

现在我想反序列化另一个xslt中的相同数据。如何进行此操作。

根据https://www.ibm.com/support/knowledgecenter/SS9H2Y_7.1.0/com.ibm.dp.doc/parse_element.html有一个相应的CCD_ 1元素,因此您可以执行CCD_。

dp:parse可作为扩展元素使用:

<xsl:variable name="parsed-nodeset">
<dp:parse select="xmlstring"/>
</xsl:variable>

或者作为一个扩展函数:

<xsl:variable name="parsed-nodeset" select="dp:parse(xmlstring)"/>

在任何一种情况下,xmlstring都应该解析为包含XML的xs:string。dp:parse的元素和函数版本都有一个可选参数,该参数告诉DataPower字符串应被视为XML:的Base64编码副本

<dp:parse select="b64string" encoding="base-64"/>
dp:parse(b64string, 'base-64')

您的输入

XML:你好

序列化:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:dpfunc="http://www.datapower.com/extensions/functions" xmlns:dp="http://www.datapower.com/extensions" extension-element-prefixes="dp" exclude-result-prefixes="dp dpconfig">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" omit-xml-declaration="yes"/>
<xsl:template match="/">
<xsl:variable name="input">
<dp:serialize select="/" omit-xml-decl="yes"/>
</xsl:variable>
</xsl:template>
</xsl:stylesheet>

反序列化:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:dpfunc="http://www.datapower.com/extensions/functions" xmlns:dp="http://www.datapower.com/extensions" extension-element-prefixes="dp" exclude-result-prefixes="dp dpconfig">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" omit-xml-declaration="yes"/>
<xsl:template match="/">
<xsl:variable name="Ouput" select="dp:parse($input)"/>>
</xsl:template>
</xsl:stylesheet>

最新更新