スキーマを使用して、xml メッセージのエンコーディングを検証するシンプルで簡単な方法はありますか?
xml の最初の行が「信頼できない」と仮定しますか? たとえば、 ?xml version="1.0" encoding="UTF-8" を無視しますか?
いいえ、スキーマは、バイナリ データ要素の型以外のエンコーディング タイプを指示することはできませんが、このエンコーディングは、ドキュメント自体の高レベルのエンコーディングによってカプセル化されます。これは、スキーマがトランスポート形式ではなく情報を記述することを前提としていることを理解している場合に意味があります。XML 仕様は、最も一般化された意味での情報の表現方法や保存方法など、ドキュメントの転送情報を規定するものです。スキーマは、XML を介して格納されたデータが関係者間の何らかの構文上の制約を満たしていることを検証するためのものです。XML仕様で定義されているプロローグ(あなたが言及した最初の行)は、存在する(または存在しない)が、XMLリーダーが文書がどのようにエンコードされているかを知る必要があるエンティティです。
興味があるなら、これは XML 1.1 仕様の関連セクションであり、この合意にどのように達したかについてです。さらに興味深いのは、苦情の読者がどのようにエンコーディングを「推測」できるかです。実際のエンコーディング属性を読み取ります: http://www.w3.org/TR/xml11/#sec-guessing