質問
文字列要素タグでは、次の文字が検出されるとXMLパーサーは confused を取得します
'
<!> quot;
<!> lt;
<!> gt;
<!> amp;
(つまり、会社の名前がデータベースフィールドから取得されたとしましょう。次のようになります:<!> quot; Smith <!> amp; Sons <!> quot;)
問題は-要素内で見つかった場合、これらの文字を無視するようにXSDを設計するにはどうすればよいですか?
解決
これらの文字を無視させることはできません。
これらはXMLでは無効であるため、エスケープするか、CDATAセクションでラップする必要があります。不適切な手段(つまり、文字列の連結)を使用してXMLを構築する場合を除き、これらの文字がXMLに表示される方法はありません。
適切な手段(ある種のXMLライブラリ)を使用してXMLを構築すると、これらの文字はXMLエスケープされた対応する文字に透過的に置き換えられ、パーサーは文句を言いません。
他のヒント
答えはあなたがいけないことです
XMLコンテンツの作成者は、CDATAセクションに配置する必要があります。
<!> quot; Smith <!> amp;を抽出した場合Sons <!> quot;データベースから、XMLに挿入するときにエスケープする必要があります
e.g。上記は 'Smith <!> amp; amp;になります。息子たち
上記の他の文字についても同様です。
これがどのように行われるかは、XMLコンテンツの作成方法によって異なります。 DOMなどのAPIを使用している場合、これは自動的に行われます。手作業でXMLを組み立てている場合、このことを心配する必要があります(また、文字エンコーディングなど、APIを使用することがここで望ましいオプションであることを意味します)。