質問

PCDATA と CDATA の大雑把な定義は次のようです。

  1. PCDATAは文字データですが、 解析されること。
  2. CDATA は文字データであり、 ではありません 解析されること。

しかしその後、誰かが、CDATA は実際には解析されるか、PCDATA は実際には解析されないと言った...それで少し混乱しています。本当の取引が何か知っている人はいますか?

アップデート:実際に Wikipedia に PCDATA の定義を追加しました...それは私の大まかな理解にすぎないので、その答えをあまり真剣に受け止めないでください。

役に立ちましたか?

解決

WIKIから:

PCDATAする

  

簡単に言えば、PCDATAは解析の文字データを表します。これは、文字がXML、XHTML、またはHTMLパーサーによって解析することを意味します。 (&lt;を<に変更され、<p>は、段落タグ、等を意味すると解釈されます)。文字はXML、XHTML、またはHTMLパーサーによって解析されるべきではなく、CDATA、とのことを比較します。

CDATAする

  

文字データを意味する用語CDATAは、マークアップ言語SGMLやXMLでの明確な、しかし関連の目的のために使用されます。この用語は、文書の特定の部分ではなく、より具体的な、限定された構造を有する非文字データや文字データよりも一般的な文字データであることを示している。

他のヒント

PCDATA及びCDATAの両方が解析されます。彼らは両方ともされているの文字のデータます。

これらは両方とも有効な文字のみを含める必要があります。ドキュメントのエンコーディングがUTF-8である場合たとえば、CDATAセクションの内容は、まだ有効なUTF-8文字でなければなりません。だから、ランダムなバイナリデータは、おそらくよく形成されることから文書を防ぐことができます。唯一の端部分のタグを検索した場合にも、CDATAセクションでは、まだ、解析されます。しかし、他のマークアップのような文字のような<、>や&パーサであるとして、無視して渡されます。

PCDATAで大藤litteral <および&(と 'または「属性値に)エスケープする必要があります、または彼らがマークアップとして解釈されます。エンティティにも拡大されます。

そうです、CDATAセクションは、実際に解析されます。あなたはPCDATAがが解析されていないことを言われた私はなぜわからない。

PCDATA - 解析された文字データ

CDATA - (未解析)文字データ

http://www.w3schools.com/XML/xml_cdata.aspする

  • PCDATA は、パーサーによって解析されるテキストです。テキスト内のタグはマークアップとして扱われ、エンティティが拡張されます。
  • CDATA は、 ない パーサーによって解析されます。テキスト内のタグは、ない マークアップとして扱われ、エンティティは展開されません。

デフォルトでは、すべて PCDATA です。次の例では、ルートを無視して解析され、内容はありませんが、子が 1 つあります。

<?xml version="1.0"?>
<foo>
<bar><test>content!</test></bar>
</foo>

要素にテキストのみが含まれ、子要素は含まれないことを指定する場合は、キーワード PCDATA を使用します。このキーワードは、要素に解析可能な文字データ、つまり (< 未満の文字を除くすべてのテキスト) が含まれている必要があることを指定するためです。 ) 、大なり (>) 、アンパサンド (&)、引用符 (')、および二重引用符 (")。

次の例では、bar は CDATA であり、解析されておらず、コンテンツは「content!」です。

<?xml version="1.0"?>
<foo>
<bar><![CDATA[<test>content!</test>]]></bar>
</foo>

SGML にはいくつかのコンテンツ モデルがあります。#PCDATA コンテンツ モデルでは、要素にはプレーン テキストが含まれる可能性があると規定されています。その「解析された」部分は、その中のマークアップ (PI、コメント、SGML ディレクティブを含む) が生のテキストとして表示されるのではなく解析されることを意味します。これは、エンティティ参照が置き換えられることも意味します。

プレーン テキスト コンテンツを許可する別のタイプのコンテンツ モデルは CDATA です。XML では、要素コンテンツ モデルを暗黙的に CDATA に設定することはできませんが、SGML では、要素のコンテンツでマークアップとエンティティの参照が無視されることを意味します。ただし、CDATA 型の属性では、エンティティ参照が置き換えられます。

XML では #PCDATA が唯一のプレーン テキスト コンテンツ モデルです。要素内にテキストコンテンツを許可したい場合に使用します。CDATA コンテンツ モデルは、#PCDATA の CDATA ブロック マークアップを通じて明示的に使用できますが、要素のコンテンツはデフォルトでは CDATA として定義されない場合があります。

DTD では、テキストを含む属性のタイプは CDATA である必要があります。属性宣言の CDATA キーワードは、XML ドキュメントの CDATA セクションとは異なる意味を持ちます。CDATA セクションでは、「]]>」終了タグを除くすべての文字 (<、>、&、'、および " 文字を含む) が有効です。

#PCDATA は属性のタイプとしては適切ではありません。「葉」テキストのタイプに使用されます。

#PCDATA の前にハッシュ (「ハッシュタグ」またはオクトソープとも呼ばれる) が付加されるのは、単に歴史的な理由によるものです。

あなたの最初の定義が正しいです。

PCDATAは、エンティティが展開されていることを意味して解析され、そのテキストは、マークアップとして扱われます。 CDATAはXMLパーサによって解析されていません。

要素のみがXHTMLのDTDではデフォルトでCDATAに設定された場合、それは醜い手動オーバーライドの多くを救う...なぜ、スクリプトブロックは、他の要素が含まれているのでしょうか?彼らはまだ完全に文書挿入やレンダリングの前にXMLパーサによって無視されるべき場合には - そのような要素が存在する場合、それらはDOM操作アクションでJSインタプリタによって処理されます。私は最終的に良いことである外部スクリプトリソースファイルの使用を強制するように設計されている可能性があるとします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top