Schémata XML a data v přizpůsobeních na úrovni dokumentu

Důležité Informace uvedené v tomto tématu týkající se Microsoft Wordu jsou prezentovány výhradně pro výhody a používání jednotlivců a organizací, které se nacházejí mimo USA a jeho území nebo které používají nebo vyvíjejí programy, které běží, produkty Microsoft Wordu licencované společností Microsoft před lednem 2010, když Společnost Microsoft odebrala implementaci konkrétních funkcí souvisejících s vlastním KÓDem XML z Microsoft Wordu. Tyto informace týkající se microsoft Wordu se nemusí číst ani používat jednotlivci nebo organizace v USA nebo jejích územích, které používají nebo vyvíjejí programy, na kterých společnost Microsoft po 10. lednu 2010 používala produkty Microsoft Wordu, které byly licencovány společností Microsoft. Tyto produkty se nebudou chovat stejně jako produkty licencované před tímto datem nebo zakoupené a licencované k použití mimo USA.

Platí pro: Informace v tomto tématu platí pro projekty na úrovni dokumentu pro Excel a Word. Další informace naleznete v tématu Funkce dostupné aplikace Office lication a typu projektu.

systém Microsoft Office Excelu a systém Microsoft Office Wordu poskytují možnost mapování schémat na dokumenty. Tato funkce může zjednodušit import a export dat XML do dokumentu a z dokumentu.

Visual Studio zveřejňuje mapované prvky schématu v přizpůsobení na úrovni dokumentu jako ovládací prvky v programovacím modelu. Visual Studio pro Excel přidává podporu pro vazbu ovládacích prvků na data v databázích, webových službách a objektech. Visual Studio pro Word a Excel přidává podporu pro podokna akcí, která se dají použít s dokumentem mapovaným schématem k vytvoření vylepšeného prostředí pro vaše řešení. Další informace najdete v tématu Přehled podokna Akce.

Poznámka:

Schémata XML s více částmi nelze použít v řešeních aplikace Excel.

Objekty vytvořené při připojení schémat k excelovými sešity

Když k sešitu připojíte schéma, Visual Studio automaticky vytvoří několik objektů a přidá je do projektu. Tyto objekty by neměly být odstraněny pomocí nástrojů sady Visual Studio, protože jsou spravovány aplikací Excel. Pokud je chcete odstranit, odeberte mapované prvky z listu nebo odpojte schéma pomocí excelových nástrojů.

Existují dva hlavní objekty:

  • Schéma XML (soubor XSD). Pro každé schéma v sešitu visual Studio přidá do projektu schéma. Zobrazí se jako položka projektu s rozšířením XSD v Průzkumník řešení.

  • Typová DataSet třída. Tato třída je vytvořená na základě schématu. Tato třída datové sady je viditelná v zobrazení třídy.

Objekty vytvořené při mapování prvků schématu na listy aplikace Excel

Když namapujete prvek schématu z podokna úloh Zdroj XML na list, Visual Studio automaticky vytvoří několik objektů a přidá je do projektu:

Mapovaná schémata Office a okno Zdroje dat sady Visual Studio

Funkce mapovaného schématu Office i okna Zdroje dat sady Visual Studio vám můžou pomoct prezentovat data v excelovém listu pro vytváření sestav nebo úpravy. V obou případech můžete datové prvky přetáhnout na list aplikace Excel. Obě metody vytvářejí ovládací prvky, které jsou data svázaná BindingSource s zdrojem dat, jako DataSet je například webová služba nebo webová služba.

Poznámka:

Když mapujete opakující se prvek schématu na list, Visual Studio vytvoří ListObject. Není ListObject automaticky vázán na data prostřednictvím BindingSource. Musíte ručně vytvořit vazbu ListObject ke zdroji dat nastavením DataSource a DataMember vlastností v okně Vlastnosti .

Následující tabulka uvádí některé rozdíly mezi těmito dvěma metodami.

Schéma XML okno Zdroje dat
Používá rozhraní Office. Používá okno Zdroje dat v sadě Visual Studio.
Umožňuje integrované funkce Office pro import a export dat ze souborů XML. Funkce importu a exportu musíte zadat programově.
Je nutné napsat kód pro vyplnění vygenerovaných ovládacích prvků daty. Ovládací prvky přidané z okna Zdroje dat mají automaticky vygenerovaný kód, který je vyplní spolu s potřebnými připojovací řetězec při použití databázových serverů.

Chování při připojení schémat k dokumentům aplikace Word

Datové objekty se nevytvořily při připojení schématu k dokumentu aplikace Word, který se používá v projektu Office na úrovni dokumentu. Když ale namapujete prvek schématu na dokument, vytvoří se ovládací prvky. Typ ovládacího prvku závisí na typu prvku, který mapujete; opakující se prvky generují XMLNodes ovládací prvky a neopakující prvky generují XMLNode ovládací prvky. Další informace naleznete v tématu XMLNodes Control and XMLNode Control.

Nasazení řešení, která obsahují schémata XML

Měli byste vytvořit instalační program pro nasazení řešení, které používá schéma XML mapované na dokument. Instalační program by měl schéma zaregistrovat v knihovně schématu na počítači uživatele. Pokud schéma nezaregistrujete, řešení bude i nadále fungovat, protože Word vygeneruje dočasné schéma na základě prvků, které jsou v dokumentu, když ho uživatel otevře. Uživatel ale nebude moct provést ověření nebo uložit schéma použité k vytvoření projektu. Další informace o instalačních programech naleznete v tématu Nasazení aplikací, služeb a komponent.

Do projektu můžete také přidat kód, který zkontroluje, jestli je schéma v knihovně a zaregistrováno. Pokud tomu tak není, můžete uživatele upozornit.

// Ensure that the schema is in the library and registered with the document.
private bool CheckSchema()
{
    const string namespaceUri = "http://schemas.contoso.com/projects";
    bool namespaceFound = false;
    bool namespaceRegistered = false;

    foreach (Word.XMLNamespace n in Application.XMLNamespaces)
    {
        if (n.URI == namespaceUri)
        {
            namespaceFound = true;
        }
    }

    if (!namespaceFound)
    {
        MessageBox.Show("XML Schema is not in library.");
        return false;
    }

    foreach (Word.XMLSchemaReference r in this.XMLSchemaReferences) 
    {
        if (r.NamespaceURI == namespaceUri)
        {
            namespaceRegistered = true;
        }
    }

    if (!namespaceRegistered)
    {
        MessageBox.Show("XML Schema is not registered for this document.");
        return false;
    }
    
    return true;
}