XmlReaderSettings.ConformanceLevel プロパティ

定義

XmlReader が従う準拠のレベルを取得または設定します。

public:
 property System::Xml::ConformanceLevel ConformanceLevel { System::Xml::ConformanceLevel get(); void set(System::Xml::ConformanceLevel value); };
public System.Xml.ConformanceLevel ConformanceLevel { get; set; }
member this.ConformanceLevel : System.Xml.ConformanceLevel with get, set
Public Property ConformanceLevel As ConformanceLevel

プロパティ値

ConformanceLevel

XML リーダーが適用する準拠のレベルを指定する列挙値のいずれか。 既定値は、Document です。

次の例では、XML フラグメントを XmlReader 読み取るオブジェクトを作成します。

string xmlFrag ="<item rk:ID='abc-23'>hammer</item> " +
                        "<item rk:ID='r2-435'>paint</item>" +
                        "<item rk:ID='abc-39'>saw</item>";

// Create the XmlNamespaceManager.
NameTable nt = new NameTable();
XmlNamespaceManager nsmgr = new XmlNamespaceManager(nt);
nsmgr.AddNamespace("rk", "urn:store-items");

// Create the XmlParserContext.
XmlParserContext context = new XmlParserContext(null, nsmgr, null, XmlSpace.None);

// Create the reader.
XmlReaderSettings settings = new XmlReaderSettings();
settings.ConformanceLevel = ConformanceLevel.Fragment;
XmlReader reader = XmlReader.Create(new StringReader(xmlFrag), settings, context);
Dim xmlFrag As String = "<item rk:ID='abc-23'>hammer</item> " & _
                                     "<item rk:ID='r2-435'>paint</item>" & _
                                     "<item rk:ID='abc-39'>saw</item>"

' Create the XmlNamespaceManager.
Dim nt As New NameTable()
Dim nsmgr As New XmlNamespaceManager(nt)
nsmgr.AddNamespace("rk", "urn:store-items")

' Create the XmlParserContext.
Dim context As New XmlParserContext(Nothing, nsmgr, Nothing, XmlSpace.None)

' Create the reader. 
Dim settings As New XmlReaderSettings()
settings.ConformanceLevel = ConformanceLevel.Fragment
Dim reader As XmlReader = XmlReader.Create(New StringReader(xmlFrag), settings, context)

注釈

このメソッドによって作成される XML リーダーは、既定で Create 次のコンプライアンス要件を満たしています。

  • 新しい行と属性値は、W3C XML 1.0 推奨事項に従って正規化されます。

  • すべてのエンティティが自動的に展開されます。

  • ドキュメント型定義で宣言された既定の属性は、閲覧者が検証しない場合でも常に追加されます。

  • 正しい XML 名前空間 URI にマップされた XML プレフィックスの宣言が許可されます。

  • 1 つの属性宣言と NmTokens 1 つのNotationType``Enumeration属性宣言の表記名は異なります。

このプロパティを ConformanceLevel 使用して、読み取るストリームが整形式 XML 1.0 ドキュメントまたはドキュメント フラグメントの規則に準拠していることを確認し、保証できます。 データが準拠していない場合は、 XmlException 例外がスローされます。 既定値は ConformanceLevel.Document (ドキュメント レベルの準拠) です。

3 つの準拠レベルは次のとおりです。

設定 説明
Document XML データが整形式の XML 1.0 ドキュメントの規則に準拠していることを確認します。 このレベルのチェックにより、任意のプロセッサが、整 形式の XML 1.0 ドキュメントとして読み取られるストリームを使用できるようになります。

リーダーは以下をチェックします。

- 最上位項目には、XML 宣言、ドキュメント型定義 (DTD)、要素、コメント、空白、または処理命令以外のノードを含めてはなりません。
- XML データには、最上位レベルの要素ノードが 1 つだけ必要です。
Fragment XML データが整形式の XML 1.0 ドキュメント フラグメントの規則に準拠していることを確認します。

この設定では、複数のルート要素を持つ XML データやトップレベルのテキスト ノードが受け入れられます。 このレベルのチェックにより、どのプロセッサでも、 外部解析されたエンティティとして読み取られるストリームを使用できるようになります。
Auto リーダーが受信データに基づいて準拠チェックのレベルを決定する必要があることを指定します。

XML データに DTD 情報が含まれている場合、ドキュメントの一致チェックが適用されます。

XML データに次のいずれかが含まれている場合、フラグメントの一致チェックが適用されます。

- ルート レベルのテキスト、CDATA、またはエンティティ参照ノード。
- ルート レベルで複数の要素。
- ルート レベルに要素がありません。

ルート レベルにテキスト ノードと DTD があるなどの矛盾がある場合には XmlException がスローされます。

この設定は、既存の Create に追加機能を追加するために XmlReader メソッドが使われた場合のラップ シナリオで使用することができます。 この場合、 ConformanceLevel.Document 新しい準拠チェックは追加されません。 一致チェックはラップされている XmlReader に任されます。

注意

XML 1.0 勧告では、DTD がある場合にはドキュメント レベルの一致が必要です。 したがって、リーダーがサポート ConformanceLevel.Fragmentするように構成されているが、XML データにドキュメント型定義 (DTD) が含まれている場合は、an XmlException がスローされます。

プロパティの設定に応じて、リーダーが特定の準拠違反を処理する方法を次に ConformanceLevel 示します。

条件 Document Fragment Auto
テキストまたは型指定された値が最上位に表示されます。 XmlException がスローされます。 この設定の違反とは見なされません。 この設定の違反とは見なされません。
最上位に複数の要素が表示されるか、要素が表示されません。 XmlException がスローされます。 この設定の違反とは見なされません。 この設定の違反とは見なされません。
最上位の項目は空白です。 この設定の違反とは見なされません。 この設定の違反とは見なされません。 この設定の違反とは見なされません。
最上位レベルの項目は属性です (テキスト ノードとして認識されます)。 XmlException がスローされます。 この設定の違反とは見なされません。 この設定の違反とは見なされません。
複数の連続したテキスト ノードがある。 この設定の違反とは見なされません。 この設定の違反とは見なされません。 この設定の違反とは見なされません。
同じ名前空間プレフィックスは、同じローカル スコープで 2 回宣言されます。 XmlException がスローされます。 XmlException がスローされます。 XmlException がスローされます。
要素または属性内の名前空間がローカル スコープに存在しません。 XmlException がスローされます。 XmlException がスローされます。 XmlException がスローされます。
データにプレフィックスと名前空間の不一致が含まれています。 XmlException がスローされます。 XmlException がスローされます。 XmlException がスローされます。
xml:space 属性に無効な値が含まれています。 XmlException がスローされます。 XmlException がスローされます。 XmlException がスローされます。
無効な名前が検出される。 XmlException がスローされます。 XmlException がスローされます。 XmlException がスローされます。
プレフィックスが xml URI と http://www.w3.org/XML/1998/namespace 一致しません。 XmlException がスローされます。 XmlException がスローされます。 XmlException がスローされます。

適用対象

こちらもご覧ください