XML-Schemas und Daten in Anpassungen auf Dokumentebene

Wichtig Die informationen, die in diesem Thema zu Microsoft Word beschrieben sind, werden ausschließlich für den Vorteil und die Nutzung von Einzelpersonen und Organisationen angezeigt, die sich außerhalb der USA und ihrer Gebiete befinden oder Programme entwickeln, die von Microsoft vor Januar 2010 lizenziert wurden, wenn Microsoft eine Implementierung bestimmter Funktionen im Zusammenhang mit benutzerdefiniertem XML aus Microsoft Word entfernt hat. Diese Informationen zu Microsoft Word werden möglicherweise nicht von Einzelpersonen oder Organisationen in den USA oder ihren Gebieten gelesen oder verwendet, die Programme verwenden oder entwickeln, die auf Microsoft ausgeführt werden, Microsoft Word-Produkte, die nach dem 10. Januar 2010 von Microsoft lizenziert wurden. Diese Produkte verhalten sich nicht wie Produkte, die vor diesem Datum lizenziert sind oder vor diesem Datum lizenziert oder außerhalb der USA lizenziert und lizenziert wurden.

Gilt für: Die Informationen in diesem Thema gelten für Projekte auf Dokumentebene für Excel und Word. Weitere Informationen finden Sie unter features available by Office-App lication and project type.

Microsoft Office Excel und Microsoft Office Word bieten die Möglichkeit, Ihren Dokumenten Schemas zuzuordnen. Dieses Feature kann das Importieren und Exportieren von XML-Daten in und aus dem Dokument vereinfachen.

Visual Studio macht zugeordnete Schemaelemente in Anpassungen auf Dokumentebene als Steuerelemente im Programmiermodell verfügbar. Für Excel bietet Visual Studio Unterstützung zum Binden der Steuerelemente an Daten in Datenbanken, Webdiensten und Objekten. Für Word und Excel bietet Visual Studio Unterstützung für Aktionsbereiche, die mit einem schemazuordnungen Dokument verwendet werden können, um eine verbesserte Endbenutzerumgebung für Ihre Lösungen zu erstellen. Weitere Informationen finden Sie im Übersichtsbereich "Aktionen".

Hinweis

Sie können in Excel-Lösungen keine mehrteiligen XML-Schemas verwenden.

Objekte, die beim Anfügen von Schemas an Excel-Arbeitsmappen erstellt werden

Wenn Sie ein Schema an eine Arbeitsmappe anfügen, erstellt Visual Studio automatisch mehrere Objekte und fügt sie dem Projekt hinzu. Diese Objekte sollten nicht mithilfe von Visual Studio-Tools gelöscht werden, da sie von Excel verwaltet werden. Um sie zu löschen, entfernen Sie die zugeordneten Elemente aus dem Arbeitsblatt, oder trennen Sie das Schema mithilfe von Excel-Tools.

Es gibt zwei Standard Objekte:

  • XML-Schema (XSD-Datei). Für jedes Schema in der Arbeitsmappe fügt Visual Studio dem Projekt ein Schema hinzu. Dies wird als Projektelement mit einer XSD-Erweiterung in Projektmappen-Explorer angezeigt.

  • Eine typisierte DataSet-Klasse. Diese Klasse wird basierend auf dem Schema erstellt. Diese Datasetklasse ist in der Klassenansicht sichtbar.

Objekte, die beim Zuordnen von Schemaelementen zu Excel-Arbeitsblättern erstellt werden

Wenn Sie ein Schemaelement aus dem Aufgabenbereich "XML-Quelle " einem Arbeitsblatt zuordnen, erstellt Visual Studio automatisch mehrere Objekte und fügt es ihrem Projekt hinzu:

  • Steuerelemente Für jedes zugeordnete Objekt in der Arbeitsmappe wird im Programmiermodell ein XmlMappedRange Steuerelement (für nicht wiederholte Schemaelemente) oder ein ListObject Steuerelement (für wiederholte Schemaelemente) erstellt. Das ListObject Steuerelement kann nur gelöscht werden, indem die Zuordnungen und die zugeordneten Objekte aus der Arbeitsmappe gelöscht werden. Weitere Informationen zu Steuerelementen finden Sie unter Übersicht über Hostelemente und Hoststeuerelemente.

  • Bindingsource. Wenn Sie ein XmlMappedRange Schemaelement erstellen, indem Sie dem Arbeitsblatt ein nicht wiederholtes Schemaelement zuordnen, wird ein BindingSource Element erstellt, und das XmlMappedRange Steuerelement ist an die BindingSource. Sie müssen die Bindung an BindingSource eine Instanz der Datenquelle, die dem Dokument zugeordneten Schema entspricht, z. B. eine Instanz der typierten DataSet Klasse, die erstellt wurde. Erstellen Sie die Bindung, indem Sie die DataSource eigenschaften DataMember festlegen, die im Eigenschaftenfenster verfügbar gemacht werden.

    Hinweis

    Dies BindingSource wird nicht für ListObject Objekte erstellt. Sie müssen die ListObject Datenquelle manuell binden, indem Sie die DataSource Eigenschaften DataMember im Eigenschaftenfenster festlegen.

Zugeordnete Office-Schemas und das Visual Studio-Fenster "Datenquellen"

Sowohl die zugeordnete Schemafunktionalität von Office als auch das Visual Studio-Datenquellenfenster können Sie beim Präsentieren von Daten auf einem Excel-Arbeitsblatt zur Berichterstellung oder -bearbeitung unterstützen. In beiden Fällen können Sie Datenelemente auf das Excel-Arbeitsblatt ziehen. Beide Methoden erstellen Steuerelemente, die an eine BindingSource Datenquelle gebunden sind, z. B. einen DataSet Webdienst oder einen Webdienst.

Hinweis

Wenn Sie einem Arbeitsblatt ein wiederholtes Schemaelement zuordnen, erstellt Visual Studio ein ListObject. Die ListObject Daten werden nicht automatisch über die BindingSource. Sie müssen die ListObject Datenquelle manuell binden, indem Sie die DataSource Eigenschaften DataMember im Eigenschaftenfenster festlegen.

In der folgenden Tabelle sind einige der Unterschiede zwischen den beiden Methoden aufgeführt.

XML-Schema Datenquellenfenster
Verwendet die Office-Schnittstelle. Verwendet das Datenquellenfenster in Visual Studio.
Ermöglicht die integrierten Office-Features zum Importieren und Exportieren von Daten aus XML-Dateien. Sie müssen Import- und Exportfunktionen programmgesteuert bereitstellen.
Sie müssen Code schreiben, um die generierten Steuerelemente mit Daten auszufüllen. Im Fenster "Datenquellen" hinzugefügte Steuerelemente haben automatisch Code generiert, um sie auszufüllen, zusammen mit den erforderlichen Verbindungszeichenfolge, wenn Sie Datenbankserver verwenden.

Verhalten beim Anfügen von Schemas an Word-Dokumente

Datenobjekte werden nicht erstellt, wenn Sie ein Schema an ein Word-Dokument anfügen, das in einem Office-Projekt auf Dokumentebene verwendet wird. Wenn Sie ihrem Dokument jedoch ein Schemaelement zuordnen, werden Steuerelemente erstellt. Der Typ des Steuerelements hängt davon ab, welche Art von Element Sie zuordnen; Wiederholte Elemente generieren XMLNodes Steuerelemente, und nicht wiederholte Elemente generieren XMLNode Steuerelemente. Weitere Informationen finden Sie unter XMLNodes Control und XMLNode Control.

Bereitstellung von Lösungen, die XML-Schemas enthalten

Sie sollten ein Installationsprogramm erstellen, um eine Lösung bereitzustellen, die ein XML-Schema verwendet, das einem Dokument zugeordnet ist. Das Installationsprogramm sollte das Schema in der Schemabibliothek auf dem Computer des Benutzers registrieren. Wenn Sie das Schema nicht registrieren, funktioniert die Lösung weiterhin, da Word ein temporäres Schema basierend auf den Elementen generiert, die sich im Dokument befinden, wenn der Benutzer es öffnet. Der Benutzer kann jedoch keine Überprüfung durchführen oder das Schema speichern, das zum Erstellen des Projekts verwendet wurde. Weitere Informationen zu Installationsprogrammen finden Sie unter Bereitstellen von Anwendungen, Diensten und Komponenten.

Sie können Ihrem Projekt auch Code hinzufügen, um zu überprüfen, ob sich das Schema in der Bibliothek befindet und registriert ist. Wenn dies nicht der Grund ist, können Sie den Benutzer warnen.

// 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;
}