14

&gt;私は現在、7年以来WebサイトとXMLインターフェースを開発していますが、を使用することが本当に必要な状況に陥ったことはありません><これまでのところ、すべての明確化は、、、およびを引用するだけで処理でき&ます。"'

大なり記号をエスケープすることが不可欠であると感じた状況(SGML処理、ブラウザーの問題、XSLTなどに関連する)に誰かがいたことがあります&gt;か?

更新:XML仕様を確認しました。たとえば、セクション2.4の文字データについて説明しています。

文字データ

[14]      CharData       ::=      [^<&]* - ([^<&]* ']]>' [^<&]*)

したがって>、CDATAセクションの終了シーケンスを除いて、それは特別なものとしては言及されていません。

が重要であるこの単一のケース>は、CDATAセクションの終わりになりますが、]]>それを引用すると、引用(つまり、リテラル文字列]]&gt;)は文字通り出力に到達します(それはCDATAです)。

4

5 に答える 5

7

ほとんどすべてのXMLインタープリターがあなたの意味を理解するので、絶対にそうする必要はありません。ただし、そうする場合でも、保護なしで特殊文字を使用します。

XMLはすべてセマンティックに関するものであり、これは実際にはセマンティックに準拠していません。

あなたのアップデートについて、あなたはこの部分を忘れました:

直角ブラケット(>)は、文字列 ">"を使用して表すことができ、互換性のために、コンテンツ&gt;の文字列 ""に表示されている場合、その文字列がマークされていない場合は、""または文字参照を使用してエスケープする必要があります。 ]]>CDATAセクションの終わり。

ドキュメントに記載されているユースケースは、次のようなものです。

<xmlmarkup>
]]>
</xmlmarkup>

ここで、この]]>部分は古いSGMLパーサーで問題になる可能性があるため、互換性の理由から=にエスケープする必要があります。]]&gt;

于 2010-08-25T14:45:03.943 に答える
3

(x)htmlドキュメントの作成者としてではなく、Webサイトのずさんなコメントフィールドのユーザーとして、htmlの挿入を「提供」します。

つまり、サイトを正しい方法で実行すれば、とにかくコンテンツをハードコーディングしないでしょう。したがって、あなたの呼び出しhtmlentitiesまたは何か(長い間見られない、php)はあなたのために特殊文字を置き換えるのを引き受けます。確かに、手動で入力することはありませんが、自動的に置き換えられる&gt;ように対策を講じてください。>

于 2010-08-25T14:50:39.007 に答える
3

厳密なxmlバリデーターを渡すために、19時間前ではないものを使用しました。もう1つのケースは、次のように、実際にhtml / xmlコンテンツテキスト(属性ではなく)でそれらを使用する場合です<

確かに、緩いパーサーは、投げたもののほとんどを受け入れますが、XSSについて心配している場合は、&lt; あなたの友だちです。

>更新: Firefoxでエスケープする必要がある例を次に示します。

<?xml version="1.0" encoding="utf-8" ?>
<test>
    ]]>
</test>

確かに、それはまだ孤独を逃れなければならない例ではありません>

于 2010-08-25T14:55:35.057 に答える
0

>HTML5(XHTML5ではなく)ドキュメントで引用する必要がある別の例を考えました。引用符のない属性で引用する必要がある場合(これはもちろん議論の余地があります)。

<img src=arrow.png alt=&gt;>

XHTMLと同等である必要があります

<img src="arrow.png" alt=">" />

しかし、繰り返しになりますが、(?<!X)HTMLはSGMLではありません。

于 2011-07-18T08:06:25.053 に答える
0

次のテキストがthis is a not a ]]> nice dayあり、それをCDATAセクションで囲むことにしたとします<![CDATA[this is a not a ]]> nice day]]>

これを回避するために(そして、マークされたセクションが終了していないSGMLフラグメントの解析を可能にするために)、ISO 8879:1986の10.4節は、マークされたセクションの外側での発生は]]>エラーであると宣言しています。

また、SGMLの時代には、マークされたセクションはCDATA(XMLのように)だけでなく、RCDATA(エンティティと文字参照のみが許可されます)およびIGNOREとINCLUDE(マークアップの認識が可能)にも使用されたため、非常に人気がありました。それらの内部)。

たとえば、SGMLでは次のように書くことができます。

 <!ENTITY %WHATTODO "INCLUDE">
 <![%WHATTODO;[<b>]]&gt;</b>]]>

これは次と同等です:

 <b>]]&gt;</b>
于 2013-12-21T00:19:14.723 に答える