2014-11-21 19 views
0

问题可能看起来很愚蠢,所以请原谅,但是有人可以解释一下dp:serialize的用法。dp:datapower中的序列化函数

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

字节流意味着什么它指的是1和0?

另外请让我知道我们需要使用这个dp扩展功能的场景很少。

感谢

回答

0

当您在XSLT处理之中的时候,你正在处理XML的所有位(输入文档,上下文节点,该节点集在XSL:变量)是而不是文本,它们是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:解析:

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

我从来没有挺能找出原因,他们决定实施< DP:连载>作为一个扩展元素和dp:parse()作为扩展函数。对我来说似乎不对称。

+0

感谢您的回复。请帮助我了解是否对于特定的xml块我总是希望它作为一个文本,我可以定义特定的块作为cdata这将帮助我实现与serialize相同的条件或两个功能都完全不同,并在不同的场景? – user3173953 2014-11-24 07:14:36