如何使用由dp:serialize extension element序列化的xslt反序列化datapower中的数据

时间:2016-05-26 09:45:38

标签: xslt ibm-datapower

以下是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>

现在我想在anoter xslt.How中反序列化相同的数据来继续这个。

3 个答案:

答案 0 :(得分:0)

根据https://www.ibm.com/support/knowledgecenter/SS9H2Y_7.1.0/com.ibm.dp.doc/parse_element.html,有一个相应的dp:parse元素,因此您可以<dp:parse select="$your-xml-data"/>

答案 1 :(得分:0)

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:字符串。 dp:parse的元素和函数版本都有一个可选参数,告诉DataPower该字符串应该被视为XML的Base64编码副本:

<dp:parse select="b64string" encoding="base-64"/>

dp:parse(b64string, 'base-64')

答案 2 :(得分:0)

您的输入

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>