问题可能看起来很愚蠢,所以请原谅,但有人可以解释一下 dp:serialize 的用法。
我在某处读到它将节点集转换为字节流。
字节流是什么意思是指 1 和 0 吗?
另外请告诉我一些我们需要使用这个 dp 扩展功能的场景。
谢谢
问题可能看起来很愚蠢,所以请原谅,但有人可以解释一下 dp:serialize 的用法。
我在某处读到它将节点集转换为字节流。
字节流是什么意思是指 1 和 0 吗?
另外请告诉我一些我们需要使用这个 dp 扩展功能的场景。
谢谢
当您在进行 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() 实现为扩展函数。对我来说似乎不对称。