[解決済み] xmlのCDATAエンドトークンをエスケープする方法はありますか?
質問
CDATA エンドトークンをエスケープする方法はあるのでしょうか?
]]>
) をエスケープする方法はあるのでしょうか?あるいは、より一般的には、CDATA 内で使用するためのエスケープシーケンスがあるかどうか(しかし、もしそれが存在するならば、とにかく、開始または終了トークンをエスケープすることだけが意味をなすと思われます)。
基本的に、CDATA に埋め込まれた開始または終了トークンをパーサーが解釈せず、単なる文字シーケンスとして扱うように指示することは可能です。
おそらく、そのようなことをしようとしていることに気づいたら、xml 構造またはコードをリファクタリングすべきですが、ここ 3 年ほど日常的に xml を扱っていてこの問題が発生したことがないにもかかわらず、それが可能かどうか疑問に思っていました。単なる好奇心で。
編集してください。
htmlエンコードを使用する以外に...
どのように解決するのですか?
明らかに、この質問は純粋に学術的なものです。幸いなことに、これには非常に明確な答えがあります。
CDATA のエンドシーケンスはエスケープできません。XML のプロダクション ルール 20 仕様の は非常に明確です。
[20] CData ::= (Char* - (Char* ']]>' Char*))
編集部:この製品ルールは、文字通り、「CDataセクションは、']]>'というシーケンス以外のものなら何でも含むことができる」という意味です。例外はありません。
編集2: この製品ルールは と同じセクション も読み取れます。
CDATAセクション内では、CDEnd文字列のみがマークアップとして認識され、左角括弧とアンパサンドはそのままの形で使用することができます。
<
および "&
"です。CDATAセクションは入れ子にできません。
つまり、実体参照、マークアップ、その他の形式の解釈された構文を使うことはできません。CDATAセクションの内部でパースされるテキストは次のものだけです。
]]>
であり、それはセクションを終了させます。
したがって、エスケープすることはできません。
]]>
をCDATAセクション内でエスケープすることはできません。
EDIT3:このセクションの と同じセクション も読み取れます。
2.7 CDATAセクション
定義 CDATAセクションは、文字データが発生する可能性のある場所ならどこでも発生する可能性があります; それらは、さもなければマークアップとして認識されるであろう文字を含むテキストのブロックを回避するために使用されます。CDATAセクションは、文字列 "<で始まります![CDATA["と文字列 "で終わります]>":].
そして、文字データが発生する可能性のある場所には、単一のCDATAセクションの代わりに複数の隣接するCDATAセクションを含めて、CDATAセクションが存在する可能性があります。それによって
]]>
トークンを分割し、その 2 つの部分を隣接する CDATA セクションに配置することができます。
の例です。
<![CDATA[Certain tokens like ]]> can be difficult and <invalid>]]>
は次のように書きます。
<![CDATA[Certain tokens like ]]]]><![CDATA[> can be difficult and <valid>]]>
関連
-
[解決済み] XMLの<![CDATA[]]>は何を意味するのですか?
-
[解決済み] XML文書でエスケープする必要がある文字は何ですか?
-
[解決済み] XMLでタグのブロックをコメントアウトするにはどうすればよいですか?
-
[解決済み] XMLのアンパサンドをエスケープして、HTMLで実体として表示するにはどうすればよいですか?
-
[解決済み] ある要素のn番目のインスタンスを取得するためのXPathクエリ
-
[解決済み] XPath contains()の使い方を教えてください。
-
[解決済み] XML インスタンスドキュメントから XSD スキーマを生成するためのツールはありますか?[クローズド]。
-
[解決済み] SVG テキストの自動改行
-
[解決済み] Ubuntu 11.04でRパッケージがインストールできない [非公開]
-
[解決済み] Eclipse で XML の検証を無効にする
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] XMLの<![CDATA[]]>は何を意味するのですか?
-
[解決済み] コマンドラインからXMLをきれいに印刷する方法は?
-
[解決済み] XMLの要素とノードはどう違うのですか?
-
[解決済み] Linearレイアウトでボタンを中央に配置する
-
[解決済み] XPath: select text node
-
[解決済み] ある要素のn番目のインスタンスを取得するためのXPathクエリ
-
[解決済み] XMLコマンドライン処理のためのGrepとSedの等価版
-
[解決済み] IIS7:HTTP->HTTPS クリーンアップ
-
[解決済み] XMLサイトマップのContent-Typeはどのような値ですか?
-
[解決済み] XSD - 要素を何度でも好きな順番で並べられるようにするには?