0

こんばんは、アドバイスください。FOP 0.95 (バージョン 1.0) と EXSL 拡張機能を使用しています。私はこのXMLを持っています:

<List>
  <Item>
    <Details><![CDATA[<details><weight>0.5kg</weight><colour>Red</colour></details>]]></Details>
  </Item>
</List>

exsl:node-set() 関数を使用して CDATA の文字列を解析する方法はありますか? 次のコードは、「0.5kg Red」ではなく「<details><weight>0.5kg</weight><colour>Red</colour></details>」を出力します。これは、解析されずに文字列として処理されることを意味します。

<xsl:variable name="txtDetails" select="/List/Item/Details"/>
<xsl:variable name="details" select="exsl:node-set($txtDetails)"/>
<xsl:value-of select="$details"/>
4

1 に答える 1

1

答えはノーだ。CDATA セクションにラップされたコンテンツは、XML マークアップとして解析されません。それが CDATA セクションの要点です。使用exsl:node-set()しても役に立ちません。

質問は XSL-FO とは何の関係もありません。FOP は XML パーサーではなく、XSL-FO プロセッサーです。もちろん、XML パーサーを使用しますが、それはこの回答には影響しません。FOP も XSLT プロセッサではありません。XSLT 変換を行うことはできますが、実際の XSLT プロセッサは「舞台裏」で実際の作業を行います。

于 2012-05-30T17:16:31.957 に答える