2

変数の内容 (乱雑な html を含む可能性がある) を cdata セクションにラップできるかどうか疑問に思っていました。

eXist で XQuery を使用していますが、うまく動作しないようです。

私は試した

<![CDATA[ $data ]]>
<![CDATA[ {$data} ]]>

どちらの場合も、変数はその内容に置き換えられず、それぞれ $data と {$data} のままです。

concat などの文字列関数も使用してみましたが、これら<![CDATA[&lt;![CDATA[.

$data には、html wysiwyg エディターからの http get/post データが含まれています。

xquery version "1.0";
declare namespace request="http://exist-db.org/xquery/request";

let $data := request:get-parameter("content" , "")
return <![CDATA[ {$data} ]]>

誰かがそれをどのように行うべきですか?前もって感謝します。

4

2 に答える 2

0

たとえば、KML の説明に含めるために、整形式だが任意の HTML を文字列としてエンコードする場合は、util:serialise() を使用します。

例えば。

xquery version "1.0";
declare namespace util="http://exist-db.org/xquery/util";

let $data := <div><h1>stuff</h1><a href="url"> <img src="image"/></a></div>
return
   util:serialize($data,"method=xml"))

効果は、XML が CDATA で囲まれ、予約済みの XML 文字がエンコードされている場合と同じです。

于 2011-03-30T19:23:25.973 に答える
0

@アレハンドロは正しいです。Priscilla Walmsley のXQueryブック pp. 280-281 を参照してください。「CDATA セクションのすべてのテキストは文字どおりに解釈されます。CDATA セクションに囲まれた式を含めることはできません。」

不正なビットを修正して「乱雑な HTML」に対処したい場合は、NekoHTML を利用したutil:parse-html()関数を調べてみてください。乱雑な HTML 文字列を渡すと、整形式の XML ノードが反対側に表示されます。

于 2011-03-27T02:17:34.310 に答える