0

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

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

字节流是什么意思是指 1 和 0 吗?

另外请告诉我一些我们需要使用这个 dp 扩展功能的场景。

谢谢

4

1 回答 1

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:variable 包含一个节点集(这样你就可以使用 XPath 导航通过它)-然后您将使用 dp:parse:

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

我一直无法弄清楚为什么他们决定将 <dp:serialize> 实现为扩展元素,并将 dp:parse() 实现为扩展函数。对我来说似乎不对称。

于 2014-11-22T05:06:00.980 回答