外国語や特殊文字を含むドキュメントをロードするにはどうすればよいですか?
文書には次のような外国文字を含めることができます:
外国文字 (úóí?)
例えば、磲などの外国文字の前にエスケープシーケンスを付ける必要があります。以下に示すように、外部文字は UTF-8 でエンコードすることも、別のエンコードで指定することもできます:
外部文字 (磲)
XML が正しく読み込まれるようになりました。
他の文字は XML で予約されているため、別の方法で処理する必要があります。次の XML:
This & that
は次のエラーを生成します:
ここにはスペースは使用できません。
Line 0000001: This & that
Location 0000012: ----------^
ここで & は XML 構文構造の一部であり、XML データ ソース内にのみ配置されている場合は解釈できません。として & 。 「エンティティ」と呼ばれる特殊な文字シーケンスを置き換える必要があります。
This & that
次の文字には対応するエンティティが必要です:
< <
& &
区切り文字のため、通常は属性値内で使用できません。たとえば、次の場合はエラーが返されます:
ここでの一重引用符は、属性の区切り文字として、また属性値自体の中で使用されます。この問題を修正するには、属性の区切り文字を二重引用符に変更します:
または、一重引用符をエンティティにエスケープすることもできます'
" を使用できます。
CDATA セクションにテキストを配置することで、要素コンテンツ内の特殊文字を処理することもできます。次は正しいです: この例では、XML オブジェクト モデルは、 CDATA ノードを XML ノードの子ノードとして指定すると、文字列
This & that is just "text" content.
を nodeValue として返します
Visual Studio 6.0 C++ で MSXML COM コンポーネントを使用する方法
Visual C++ で6.0 で MSXML COM コンポーネントを使用する最も簡単な方法は、#import ディレクティブを使用することです:
これはすべての IXML* インターフェイスとインターフェイス ID を定義します。 MSXML タイプ ライブラリとヘッダー ファイル (英語) は、クラス IID を含む uuid.lib からも入手できます
XML で HTML エンティティを使用する方法は?次の XML には HTML エンティティが含まれています。 :
Copyright ? 2000, Microsoft Inc, All Rights Reserved.
Line: 1, Location: 23,エラーコード: 0xC00CE002
Copyright ? 2000, ... --------------------------^
これは、XML が 5 つしかないためです。組み込みエンティティの詳細については、「HTML エンティティを使用するには、DTD を使用して定義する必要があります。」を参照してください。この DTD を使用するには、次のように DOCTYPE タグに含めてください。インターフェイスを検証ツールのテスト ページに貼り付け、DTD 検証をオフにし、検証をクリックします。ドキュメントが読み込まれ、検証ツール ページの最後に著作権文字が表示されます。
%HTMLENT;
%HTMLENT;
すべての HTML エンティティを定義し、それらを で使用します。 XML ドキュメント。
属性の動作
nodeValue 元の XML ソースで指定されているように、TEXT、CDATA、COMMENT、および PI ノード上の元のテキスト コンテンツ (空白文字を含む) を返します。 。 ELEMENT ノードおよび DOCUMENT 自体の場合は、null が返されます。
データ nodeValue と同じ
テキスト 指定されたサブツリー内の複数の TEXT ノードと CDATA ノードを繰り返し接続し、結合した結果を返します。
注: 空白文字には、改行、タブ、スペースが含まれます。
nodeValue 属性は通常、ドキュメントのロード方法や現在の xml:space スコープに関係なく、元のドキュメントのコンテンツを返します。
text属性は、指定されたサブツリー内のすべてのテキストを接続し、エンティティを展開します。これは、ドキュメントのロード方法、PReserveWhiteSpace スイッチの現在の状態、および現在の xml:space スコープに関係します。以下を参照してください。
ドキュメントがロードされるときはpreserveWhiteSpace = true
preserveWhiteSpace=true preserveWhiteSpace=true preserveWhiteSpace=false preserveWhiteSpace=false
xml:space=preserve xml:space=default xml:space=preserve xml :space=default
reserved、reserved Preserve ドキュメントのロード時に保持して切り詰めます PreserveWhiteSpace = false
preserveWhiteSpace=true prepareWhiteSpace=false prepareWhiteSpace=false
xml:space=preserve xml:space=default xml:space=preserve xml :space=default
ここでの保存とは、元のテキストの内容が元の XML 文書とまったく同じであることを意味し、切り捨てとは、先頭と末尾のスペースが削除されていることを意味し、セミ-preserved は、「重要な空白文字」が保持され、「重要でない空白文字」が正規化されることを意味します。重要な空白文字は、テキスト コンテンツ内の空白文字です。重要でない空白文字はトークン間の空白文字で、次のようになります:
n
t Janen
この例では、赤は無視できる重要でない空白文字であり、緑は空白文字であるため重要です。はテキストコンテンツの一部であるため、無視できない重要な意味を持っています。したがって、この例では、text プロパティは次を返します:
ステータスの戻り値
"JanentSmith" を保持して切り捨てる
"Jane Smith" を半分保持して切り詰める
「半保存」は重要でない空白文字を正規化することに注意してください。たとえば、改行文字やタブ文字は 1 つのスペースに削減されます。 xml:space 属性とpreserveWhiteSpace スイッチを変更すると、テキスト プロパティはそれに応じて異なる値を返します。
CDATA と xml:space="preserve" サブツリー境界
以下の例では、CDATA ノードまたは "preserve" ノードの内容は、重要でない空白文字の正規化に参加しないため、連結されます。例:
n
t Jane n t Smith ]>n
この場合、CDATA ノード内の空白文字は「重要でない」空白文字と「マージ」されなくなり、切り捨てられなくなります。したがって、「半保存され切り詰められた」ケースでは、次のものが返されます:
「Jane Smith 」
Smith エンティティは特別です
エンティティは DTD の一部としてロードおよび解析され、DOCTYPE ノードの下に表示されます。 xml:space スコープを持つ必要はありません。例:
Jane n tn
">
&Jane;
prepareWhiteSpace=false (DOCTYPE タグの範囲内) と仮定すると、エンティティの解析時に重要でない空白文字は失われます。空白文字ノードがあります:
DOCTYPE foo
ENTITY: Jane
ELEMENT: title
TEXT>:Software Design Engineer
ATTRI BUTE: xml :space="preserve "
ENTITYREF: Jane
DOCTYPE 内の ENTITY ノードの下で公開されている DOM ツリーには、WHITESPACE ノードが含まれていないことに注意してください。これは、エンティティ参照がin the xml 同じことが :space="preserve" にも当てはまります
特定のドキュメントで参照される ENTITY のすべてのインスタンスには、通常、同じツリーがあります
エンティティが空白文字を絶対に保持する必要がある場合は、そのエンティティ自体をその XML 内で指定する必要があります。 :space 属性、またはドキュメントのpreserveWhiteSpace スイッチを true に設定する必要があります。
属性内の空白文字を処理するには?
属性値にアクセスするには、いくつかの方法があります。これは、IXMLDOMAttribute 属性と同等です。 Microsoft 拡張機能。nodeValue プロパティと text プロパティは以下を返します。 プロパティによって返されるテキスト
attrNode.nodeValue
attrNode.value
getAttribute("name") は、元のドキュメントとまったく同じコンテンツ (および拡張エンティティ) を返します。
attrNode.nodeTypedValue Null
attrNode.text は、先頭と末尾の空白文字が切り捨てられている点を除き、nodeValue と同じです。
「XML 言語」仕様では、XML アプリケーションの次の動作を定義しています: 属性タイプによって返されるテキスト
CDATA ID、IDREF、IDREFS、ENTITY、ENTITIES、NOTATION、列挙
半正規化 完全に正規化
ここで準正規化改行やタブ文字をスペースに変換することになりますが、複数のスペースが1つのスペースに縮退することはありません。
上記は、XML を始めるための FAQ (3) の内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。