dp:datapower中的serialize函数

时间:2014-11-21 15:26:00

标签: xslt-1.0 ibm-datapower

问题可能看似愚蠢所以请原谅,但有些人可以解释一下dp:serialize的用法。

我在某处读到它将节点集转换为字节流。

字节流的含义是指1和0 ??

另外,请告诉我们我们需要使用此dp扩展功能的几个场景。

由于

1 个答案:

答案 0 :(得分:0)

当您处于XSLT处理过程中时,您正在处理的所有XML(输入文档,上下文节点,xsl:variables中的节点集)都不是文本,它们是优化的DataPower内存中的树。在您的处理中,您可能需要将某些XML转换为文本。例如,也许你想加密它。 (只是原始的AES加密,没有那些花哨的OASIS XML加密标准。)这就是dp:serialize的用武之地。它会将内存中的节点集转换为包含XML语法文本的字符串。

代码。我们需要代码。

<xsl:variable name="my-node-set">
    <xyzzy>
        <plugh>Nothing happens.</plugh>
    </xyzzy>
</xsl:variable>

<xsl:variable name="my-xml-string">
    <dp:serialize select="$my-node-set"/>
</xsl:variable>

<xsl:variable name="my-ciphered"
    select="dp:encode($alg-aes, $secret-key, $my-xml-string)"/>

如果你需要走另一条路 - 你有一个你确定是XML格式的字符串,并希望把它变成一个包含节点集的xsl:变量(这样你就可以使用了XPath导航它) - 然后你会使用dp:parse:

<xsl:variable name="my-node-set"
    select="dp:parse($my-string)"/>

我从来没有弄清楚他们为什么决定实施&lt; dp:serialize&gt;作为扩展元素,dp:parse()作为扩展函数。对我来说似乎不对称。