XmlWriterSettings.ConformanceLevel プロパティ
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
XML ライターが XML 出力をチェックする準拠のレベルを取得または設定します。
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
プロパティ値
準拠のレベル (ドキュメント、フラグメント、自動検出) を指定する列挙値のいずれか。 既定値は、Document です。
例
次の例では、XML フラグメントをメモリ ストリームに書き込みます。
XmlWriterSettings settings = new XmlWriterSettings();
settings.OmitXmlDeclaration = true;
settings.ConformanceLevel = ConformanceLevel.Fragment;
settings.CloseOutput = false;
// Create the XmlWriter object and write some content.
MemoryStream strm = new MemoryStream();
XmlWriter writer = XmlWriter.Create(strm, settings);
writer.WriteElementString("orderID", "1-456-ab");
writer.WriteElementString("orderID", "2-36-00a");
writer.Flush();
writer.Close();
// Do additional processing on the stream.
Dim settings As XmlWriterSettings = New XmlWriterSettings()
settings.OmitXmlDeclaration = true
settings.ConformanceLevel = ConformanceLevel.Fragment
settings.CloseOutput = false
' Create the XmlWriter object and write some content.
Dim strm as MemoryStream = new MemoryStream()
Dim writer As XmlWriter = XmlWriter.Create(strm, settings)
writer.WriteElementString("orderID", "1-456-ab")
writer.WriteElementString("orderID", "2-36-00a")
writer.Flush()
writer.Close()
' Do additional processing on the stream.
注釈
このプロパティは XmlWriterSettings.ConformanceLevel 、書き込まれるストリームが特定の規則セットに準拠していることを確認し、保証するように XML ライターを構成します。 XML データを確認して、整形式の XML 1.0 ドキュメントまたはドキュメント フラグメントの規則に準拠していることを確認できます。 次の表では、3 つの設定について説明します。 既定値はドキュメント レベルの準拠です。
設定 | 説明 |
---|---|
Document | XML 出力が整 形式 XML 1.0 ドキュメントの規則 に準拠し、準拠している任意のプロセッサで処理できることを確認します。 ドキュメントの準拠チェックには、ほとんどのフラグメント レベルのチェックが含まれており、次のことを確認します。 - 最上位項目には、XML 宣言、DTD、要素、コメント、空白、または処理命令以外のノードがありません。 - XML データの最上位要素ノードは 1 つだけです。 XML ライターは、書き込まれた DTD 情報を解析しません。 ユーザーは、DTD が整形式であることを確認する責任があります。 |
Fragment | XML 出力が整 形式 XML 1.0 ドキュメント フラグメントの規則に準拠していることを確認します。 この設定は、最上位レベルで複数のルート要素またはテキスト ノードを持つ XML データを受け入れます。 このレベルのチェックでは、すべてのプロセッサで、読み込むストリームが XML 1.0 の外部解析対象エンティティとして処理できることが保証されます。 DTD 情報はドキュメント フラグメントでは許可されません。 |
Auto | XML ライターが受信データに基づいて準拠チェックのレベルを決定する必要があることを指定します。 この設定は、生成された XML が整形式の XML ドキュメントかフラグメントかがわからない場合に役立ちます。 ドキュメントの一致チェックは、次の場合に適用されます。 - メソッドが WriteStartDocument 呼び出された場合。 - DTD 情報が書き込まれる場合。 XML データに次のいずれかが含まれている場合は、フラグメント準拠チェックが適用されます。 - ルート レベルの Text、CDATA、または EntityReference ノード。 - ルート レベルで複数の要素。 - ルート レベルに要素がありません。 テキスト ノードを書き出そうとしてルート レベルに DTD があるなどの矛盾がある場合には XmlException がスローされます。 別 XmlWriter のオブジェクトをラップする場合、外側のオブジェクトは追加の準拠チェックを行いません。これは基になるオブジェクトに任されます。 |
XML ライターは、指定された準拠レベルに違反する情報を検出すると、例外をスローします。 場合によっては、XML ライターによって準拠エラーが自動的に修正されます。 たとえば、ライターは、例外をスローせずに閉じられていない属性を閉じます。 次の表は、各設定でさまざまな準拠違反がどのように処理されるかを示しています。
条件 | Document | Fragment | Auto |
---|---|---|---|
DTD 情報が見つかりました。 | この設定の違反ではありません。 ただし、XML ライターは DTD をチェックしません。ユーザーは、DTD が整形式であることを確認する必要があります。 | XmlException がスローされます。 | ドキュメントの準拠チェックが適用されます。 |
WriteStartDocument が呼ばれたとき。 | この設定の違反とは見なされません。 | XmlException がスローされます。 | ドキュメントの準拠チェックが適用されます。 |
WriteStartDocument は複数回呼び出されます。 | XmlException がスローされます。 | XmlException がスローされます。 | XmlException がスローされます。 |
テキスト値は、最上位レベルに表示されます (要素または属性ノードの下には表示されません)。 | XmlException がスローされます。 | 違反とは見なされません。 | フラグメント一致チェックが適用されます。 |
最上位レベルに複数の要素が表示されるか、要素が表示されません。 | XmlException がスローされます。 | 違反とは見なされません。 | フラグメント一致チェックが適用されます。 |
最上位の項目は空白です。 | 違反とは見なされません。 | 違反とは見なされません。 | 違反とは見なされません。 |
WriteEndAttribute は、属性ノードを終了するために呼び出されません。 | XML ライターによって修正されました。 | XML ライターによって修正されました。 | XML ライターによって修正されました。 |
XML ライターが不適切に入れ子になった状態です (たとえば、呼び出しの WriteStartElement 後に a WriteEndAttributeが続きます)。 | XmlException がスローされます。 | XmlException がスローされます。 | XmlException がスローされます。 |
最上位レベルの項目は属性です。 | XmlException がスローされます。 | XmlException がスローされます。 | XmlException がスローされます。 |
複数の連続したテキスト ノードがある。 | 違反とは見なされませんが、テキスト ノードを連結するのはユーザーの責任です。 | 違反とは見なされませんが、テキスト ノードを連結するのはユーザーの責任です。 | 違反とは見なされませんが、テキスト ノードを連結するのはユーザーの責任です。 |
同じ名前空間プレフィックスが要素内で 2 回宣言されている。 | XML ライターは、2 番目の名前空間の新しいプレフィックスを生成します。 | XML ライターは、2 番目の名前空間の新しいプレフィックスを生成します。 | XML ライターは、2 番目の名前空間の新しいプレフィックスを生成します。 |
WriteStartElement は、そのスコープ内で宣言されていないプレフィックスと名前空間を指定します。または、プレフィックスが別の名前空間に関連付けられています。 | XML ライターは、必要な名前空間ノードを書き込みます。 | XML ライターは、必要な名前空間ノードを書き込みます。 | XML ライターは、必要な名前空間ノードを書き込みます。 |
WriteStartAttribute では、そのスコープ内で宣言されていないプレフィックスと名前空間を指定します。 | XML ライターは、必要な名前空間ノードを書き込みます。 | XML ライターは、必要な名前空間ノードを書き込みます。 | XML ライターは、必要な名前空間ノードを書き込みます。 |
WriteStartAttribute はプレフィックスと名前空間を指定しますが、プレフィックスは別のスコープ内名前空間に関連付けられています。 | XML ライターは、指定されたプレフィックスを無視し、正しいプレフィックスを検索するか、新しいプレフィックスを生成します。 | XML ライターは、指定されたプレフィックスを無視し、正しいプレフィックスを検索するか、新しいプレフィックスを生成します。 | XML ライターは、指定されたプレフィックスを無視し、正しいプレフィックスを検索するか、新しいプレフィックスを生成します。 |
WriteQualifiedName は、スコープ内に存在しない名前空間を使用して要素のコンテンツを書き込む場合に使用されます。 | XmlException がスローされます。 | XmlException がスローされます。 | XmlException がスローされます。 |
WriteQualifiedName は、スコープ内に存在しない名前空間を使用して属性コンテンツを書き込む場合に使用されます。 | XML ライターは、必要な名前空間宣言を書き込みます。 | XML ライターは、必要な名前空間宣言を書き込みます。 | XML ライターは、必要な名前空間宣言を書き込みます。 |
属性に xml:space 有効な値が含まれていない。 |
XmlException がスローされます。 | XmlException がスローされます。 | XmlException がスローされます。 |
無効な名前が検出される。 | XmlException がスローされます。 | XmlException がスローされます。 | XmlException がスローされます。 |
プレフィックスが xml URI と一致しません。 |
XML ライターは、この種類の違反をチェックしません。 | XML ライターは、この種類の違反をチェックしません。 | XML ライターは、この種類の違反をチェックしません。 |
プレフィックスが xml URI と http://www.w3.org/XML/1998/namespace 一致しません。 |
XmlException がスローされます。 | XmlException がスローされます。 | XmlException がスローされます。 |
xmlns プレフィックスまたはローカル名が URI と一致しません。 |
XML ライターは、この種の違反を確認しません。 | XML ライターは、この種の違反を確認しません。 | XML ライターは、この種の違反を確認しません。 |
xmlns プレフィックスまたはローカル名が URI とhttp://www.w3.org/2000/xmlns一致しません。 |
XmlException がスローされます。 | XmlException がスローされます。 | XmlException がスローされます。 |