2014-11-21 56 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