XmlWriterSettings.ConformanceLevel Vlastnost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Získá nebo nastaví úroveň shody, kterou zapisovač XML zkontroluje výstup XML pro.
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
Hodnota vlastnosti
Jedna z hodnot výčtu, která určuje úroveň shody (dokument, fragment nebo automatické zjišťování). Výchozí hodnota je Document.
Příklady
Následující příklad zapíše fragment XML do datového proudu paměti.
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.
Poznámky
Vlastnost XmlWriterSettings.ConformanceLevel nakonfiguruje zapisovač XML tak, aby kontrolovat a zaručit, že datový proud, který se zapisuje, splňuje určitou sadu pravidel. Data XML je možné zkontrolovat a zjistit, zda jsou v souladu s pravidly pro dokument XML ve správném formátu 1.0 nebo fragment dokumentu. Následující tabulka popisuje tři nastavení. Výchozí hodnota je shoda na úrovni dokumentu.
| Setting | Description |
|---|---|
| Document | Zajišťuje, že výstup XML odpovídá pravidlům pro dokument XML 1.0 ve správném formátu a může ho zpracovat jakýkoli odpovídající procesor. Kontroly shody dokumentů zahrnují většinu kontrol na úrovni fragmentu a také zajišťují následující: – Položka nejvyšší úrovně nemá žádné uzly jiné než deklarace XML, DTD, element, komentář, prázdné znaky nebo instrukce zpracování. – Data XML mají jeden a pouze jeden uzel elementu nejvyšší úrovně. Zapisovač XML neanalybuje informace DTD, které jsou napsané. Uživatel zodpovídá za zajištění, že je DTD správně vytvořený. |
| Fragment | Zajistí, aby výstup XML odpovídal pravidlům pro správně formátovaný fragment dokumentu XML 1.0. Toto nastavení přijímá data XML, která mají více kořenových elementů nebo textových uzlů na nejvyšší úrovni. Tato úroveň kontroly zajišťuje, aby jakýkoli procesor mohl využívat stream, který se čte jako externí analyzovaná entita XML 1.0. Informace DTD nejsou povoleny v fragmentech dokumentu. |
| Auto | Určuje, že zapisovač XML by měl určit úroveň kontroly shody na základě příchozích dat. Toto nastavení může být užitečné, když nevíte, jestli vygenerovaný XML bude správně formátovaný dokument XML nebo fragment. Kontrola shody dokumentů se používá v následujících případech: - Pokud WriteStartDocument je volána metoda. - Pokud se zapíšou informace DTD. Kontrola shody fragmentů se použije, pokud data XML obsahují jednu z těchto možností: – Text, CDATA nebo Uzel EntityReference na kořenové úrovni. - Více než jeden prvek na kořenové úrovni. – Žádný prvek na kořenové úrovni. Vyvolá XmlException se, pokud dojde ke konfliktu, například při pokusu o zápis textového uzlu a DTD na kořenové úrovni. Pokud zabalíte jiný XmlWriter objekt, vnější objekt neprovádí žádnou další kontrolu shody; zůstane na podkladovém objektu. |
Pokud zapisovač XML zjistí jakékoli informace, které by porušily zadanou úroveň shody, vyvolá výjimku. V některých případech zapisovač XML automaticky opraví chybu shody. Zapisovač například zavře nezařazený atribut bez vyvolání výjimky. Následující tabulka ukazuje, jak se v jednotlivých nastaveních zpracovávají různá porušení shody.
| Podmínka | Document | Fragment | Auto |
|---|---|---|---|
| Byly nalezeny informace DTD. | Toto nastavení není porušením. Zapisovač XML ale nekontroluje DTD; uživatel musí zajistit, aby byl DTD správně vytvořený. | XmlException je vyhozen. | Použije se kontrola shody dokumentu. |
| WriteStartDocument se volá. | Toto nastavení se nepovažuje za porušení. | XmlException je vyhozen. | Použije se kontrola shody dokumentu. |
| WriteStartDocument se volá vícekrát. | XmlException je vyhozen. | XmlException je vyhozen. | XmlException je vyhozen. |
| Textová hodnota se zobrazí na nejvyšší úrovni (ne pod uzlem elementu nebo atributu). | XmlException je vyhozen. | Nepovažované za porušení. | Použije se kontrola shody fragmentů. |
| Na nejvyšší úrovni se zobrazí více prvků nebo žádné prvky. | XmlException je vyhozen. | Nepovažované za porušení. | Použije se kontrola shody fragmentů. |
| Položka nejvyšší úrovně je prázdné místo. | Nepovažované za porušení. | Nepovažované za porušení. | Nepovažované za porušení. |
| WriteEndAttribute není volána k ukončení uzlu atributu. | Opraveno zapisovačem XML. | Opraveno zapisovačem XML. | Opraveno zapisovačem XML. |
| Zapisovač XML je v nesprávném vnořeném stavu (například WriteStartElement volání následuje za WriteEndAttribute). | XmlException je vyhozen. | XmlException je vyhozen. | XmlException je vyhozen. |
| Položka nejvyšší úrovně je atribut. | XmlException je vyhozen. | XmlException je vyhozen. | XmlException je vyhozen. |
| Najde se více souvislých textových uzlů. | Nepovažuje se za porušení, ale je zodpovědností uživatele zřetězení textových uzlů. | Nepovažuje se za porušení, ale je zodpovědností uživatele zřetězení textových uzlů. | Nepovažuje se za porušení, ale je zodpovědností uživatele zřetězení textových uzlů. |
| Stejná předpona oboru názvů je deklarována dvakrát v elementu. | Zapisovač XML vygeneruje novou předponu pro druhý obor názvů. | Zapisovač XML vygeneruje novou předponu pro druhý obor názvů. | Zapisovač XML vygeneruje novou předponu pro druhý obor názvů. |
| WriteStartElement určuje předponu a obor názvů, který není deklarován v daném oboru nebo je předpona přidružená k jinému oboru názvů. | Zapisovač XML zapíše potřebný uzel oboru názvů. | Zapisovač XML zapíše potřebný uzel oboru názvů. | Zapisovač XML zapíše potřebný uzel oboru názvů. |
| WriteStartAttribute určuje předponu a obor názvů, který není v daném oboru deklarován. | Zapisovač XML zapíše potřebný uzel oboru názvů. | Zapisovač XML zapíše potřebný uzel oboru názvů. | Zapisovač XML zapíše potřebný uzel oboru názvů. |
| WriteStartAttribute určuje předponu a obor názvů, ale předpona je přidružená k jinému oboru názvů v oboru názvů. | Zapisovač XML ignoruje zadanou předponu a buď vyhledá správnou předponu, nebo vygeneruje novou předponu. | Zapisovač XML ignoruje zadanou předponu a buď vyhledá správnou předponu, nebo vygeneruje novou předponu. | Zapisovač XML ignoruje zadanou předponu a buď vyhledá správnou předponu, nebo vygeneruje novou předponu. |
| WriteQualifiedName slouží k zápisu obsahu elementu pomocí oboru názvů, který v oboru neexistuje. | XmlException je vyhozen. | XmlException je vyhozen. | XmlException je vyhozen. |
| WriteQualifiedName slouží k zápisu obsahu atributu pomocí oboru názvů, který v oboru neexistuje. | Zapisovač XML zapíše potřebnou deklaraci oboru názvů. | Zapisovač XML zapíše potřebnou deklaraci oboru názvů. | Zapisovač XML zapíše potřebnou deklaraci oboru názvů. |
Atribut xml:space neobsahuje platnou hodnotu. |
XmlException je vyhozen. | XmlException je vyhozen. | XmlException je vyhozen. |
| Byl zjištěn neplatný název. | XmlException je vyhozen. | XmlException je vyhozen. | XmlException je vyhozen. |
Předpona xml se neshoduje s identifikátorem URI. |
Zapisovač XML nekontroluje tento typ porušení. | Zapisovač XML nekontroluje tento typ porušení. | Zapisovač XML nekontroluje tento typ porušení. |
Předpona xml se neshoduje s identifikátorem http://www.w3.org/XML/1998/namespace URI. |
XmlException je vyhozen. | XmlException je vyhozen. | XmlException je vyhozen. |
Předpona xmlns nebo místní název se neshoduje s identifikátorem URI. |
Zapisovač XML nekontroluje tento typ porušení. | Zapisovač XML nekontroluje tento typ porušení. | Zapisovač XML nekontroluje tento typ porušení. |
Předpona xmlns nebo místní název se neshoduje s identifikátorem http://www.w3.org/2000/xmlns URI. |
XmlException je vyhozen. | XmlException je vyhozen. | XmlException je vyhozen. |