Wskazówki: wiązanie formantów zawartości do niestandardowych części XML

W tym instruktażu przedstawiono sposób powiązać formanty zawartości w pliku dostosowań poziomie dokumentu dla programu Word dane XML, które są przechowywane w dokumencie.

Zastosowanie: Informacje przedstawione w tym temacie mają zastosowanie do projektów na poziomie dokumentu obsługiwanych w programach Word 2013 i Word 2010. Aby uzyskać więcej informacji, zobacz Funkcje dostępne w aplikacjach pakietu Office i typ projektu.

Program Word umożliwia przechowywanie danych XML o nazwie niestandardowe części XML, w dokumencie.Można sterować wyświetlaniem tych danych przez powiązanie formantów zawartości do elementów w niestandardowa część kodu XML.Przykładowy dokument ten w niniejszym instruktażu Wyświetla informacje o pracowniku, który jest przechowywany w niestandardowa część kodu XML.Po otwarciu dokumentu, formanty zawartości wyświetlanie wartości elementów XML.Wszelkie zmiany wprowadzone do tekstu w formantach zawartości są zapisywane w niestandardowa część kodu XML.

W przewodniku przedstawiono następujące zagadnienia:

  • Dodawanie formantów zawartości do dokumentu programu Word w projekcie poziomie dokumentu w czasie projektowania.

  • Tworzenie pliku danych XML i schematu XML, który definiuje elementy, które chcesz powiązać formanty zawartości.

  • Dołączanie schematu XML do dokumentu w czasie projektowania.

  • Dodawanie zawartości pliku XML do niestandardowa część kodu XML w dokumencie w czasie wykonywania.

  • Powiązanie formantów zawartości do elementów w niestandardowa część kodu XML.

  • Wiązanie DropDownListContentControl do zbioru wartości, które są zdefiniowane w schemacie XML.

[!UWAGA]

Na komputerze w poniższych instrukcjach mogą być wyświetlane inne nazwy i lokalizacje niektórych elementów interfejsu użytkownika programu Visual Studio. Te elementy są określane przez numer wersji Visual Studio oraz twoje ustawienia. Aby uzyskać więcej informacji, zobacz Dostosowywanie ustawień środowiska deweloperskiego w Visual Studio.

Wymagania wstępne

Następujące składniki są wymagane do przeprowadzenia tego instruktażu:

łącze do wideo Wideo wersję tego tematu, zobacz do wideo jak: powiązanie formanty zawartości z częściami XML Custom.

Tworzenie nowego projektu dokumentu programu Word

Tworzenie dokumentu programu Word, która będzie używana w instruktażu.

Aby utworzyć nowy projekt dokumentu programu Word

  • Utwórz projekt dokumentu programu Word o nazwie EmployeeControls.Utwórz nowy dokument dla rozwiązania.Aby uzyskać więcej informacji, zobacz Porady: tworzenie projektów Office w Visual Studio.

    Visual StudioOtwiera nowy dokument programu Word w Projektancie i dodaje projektu EmployeeControls do Solution Explorer.

Dodawanie formantów zawartości do dokumentu

Utworzyć tabelę, która zawiera trzy różne typy formantów zawartości, gdzie użytkownika można wyświetlać lub edytować informacje o pracowniku.

Aby dodać formanty zawartości do dokumentu

  1. W dokumencie programu Word, który znajduje się w Visual Studio Projektant na Wstążce wybierz Wstaw kartę.

  2. W tabele grupy, wybierz polecenie tabelii wstawić tabelę z kolumny 2 i 3 wiersze.

  3. Wpisz tekst w pierwszej kolumnie, aby wyglądał następujące kolumny:

    Nazwisko pracownika

    Data zatrudnienia

    Tytuł

  4. W drugiej kolumnie tabeli, wybierz pierwszy wiersz (obok Nazwisko pracownika).

  5. Na Wstążce wybierz Developer kartę.

    [!UWAGA]

    Jeśli Developer karta nie jest widoczna, należy go najpierw wyświetlić.Aby uzyskać więcej informacji, zobacz Porady: pokazywanie karty dewelopera na wstążce.

  6. W kontroli grupy, wybierz polecenie tekst przycisk PlainTextContentControl Aby dodać PlainTextContentControl do pierwszej komórki.

  7. W drugiej kolumnie tabeli, wybierz polecenie drugiego wiersza (obok Data zatrudnienia).

  8. W kontroli grupy, wybierz polecenie Wybór daty przycisk DatePickerContentControl Aby dodać DatePickerContentControl do drugiej komórki.

  9. W drugiej kolumnie tabeli, wybierz trzeci wiersz (obok Tytuł).

  10. W kontroli grupy, wybierz polecenie Listy rozwijanej przycisk DropDownListContentControl Aby dodać DropDownListContentControl do ostatniej komórki.

To jest cały interfejs użytkownika dla tego projektu.Jeśli uruchomisz projektu można teraz, w pierwszym wierszu wpisz tekst i wybierz datę w drugim wierszu.Następnym krokiem jest dołączyć dane, które mają być wyświetlane w dokumencie w pliku XML.

Tworzenie pliku danych XML

Zazwyczaj będzie uzyskiwał dane XML mają być przechowywane w niestandardowa część kodu XML ze źródła zewnętrznego, takiego jak plik lub bazę danych.W tym instruktażu Utwórz plik XML, który zawiera dane dotyczące pracowników, oznaczone przez elementy, które można będzie powiązać formanty zawartości w dokumencie.Aby udostępnić dane w czasie wykonywania, należy osadzić plik XML jako zasób w zestawie dostosowywania.

Aby utworzyć plik danych

  1. Na pasku menu, kliknij Projekt, Dodaj nowy element.

    Pojawi się okno dialogowe Dodaj nowy element.

  2. W Szablony okienka, wybierz Pliku XML.

  3. Do pliku o nazwie Pracownicy.XML, a następnie wybierz polecenie Dodaj przycisk.

    Pracownicy.XML plik zostanie otwarty w edytorze kodu.

  4. Zamień zawartość Pracownicy.XML pliku z następującym tekstem.

    <?xml version="1.0" encoding="utf-8" ?>
    <employees xmlns="https://schemas.microsoft.com/vsto/samples">
      <employee>
        <name>Karina Leal</name>
        <hireDate>1999-04-01</hireDate>
        <title>Manager</title>
      </employee>
    </employees>
    
  5. W Solution Explorer, wybierz polecenie Pracownicy.XML pliku.

  6. W Właściwości wybierz Tworzenie akcji właściwość, a następnie zmień wartość na Zasobów osadzonych.

    W tym kroku plik XML są osadzane jako zasób w zestawie podczas budowania projektu.Dzięki temu można uzyskać dostęp do zawartości pliku XML w czasie wykonywania.

Tworzenie schematu XML

Jeśli chcesz powiązać formant zawartości w formie pojedynczego elementu w niestandardowa część kodu XML nie trzeba użyć schematu XML.Jednakże aby powiązać DropDownListContentControl do zbioru wartości, należy utworzyć schematu XML, który sprawdza poprawność pliku danych XML, który został utworzony wcześniej.Możliwe wartości definiuje schematu XML title element.Oprawienia DropDownListContentControl do tego elementu w dalszej części tego instruktażu.

Aby utworzyć schematu XML

  1. Na pasku menu, kliknij Projekt, Dodaj nowy element.

    Pojawi się okno dialogowe Dodaj nowy element.

  2. W Szablony okienka, wybierz Schemat XML.

  3. Nazwa schematu employees.xsd i wybierz polecenie Dodaj przycisk.

    Zostanie otwarty projektant schematu.

  4. W Solution Explorer, otwórz menu skrótów dla employees.xsd, a następnie wybierz polecenie Widok Kod.

  5. Zamień zawartość employees.xsd pliku z następującego schematu.

    <?xml version="1.0" encoding="utf-8" ?>
    <xs:schema xmlns="https://schemas.microsoft.com/vsto/samples" 
        targetNamespace="https://schemas.microsoft.com/vsto/samples"
        xmlns:xs="http://www.w3.org/2001/XMLSchema"
        elementFormDefault="qualified">
      <xs:element name="employees" type="EmployeesType"></xs:element>
      <xs:complexType name="EmployeesType">
        <xs:all>
          <xs:element name="employee" type="EmployeeType"/>
        </xs:all>
      </xs:complexType>
      <xs:complexType name="EmployeeType">
        <xs:sequence>
          <xs:element name="name" type="xs:string" minOccurs="1" maxOccurs="1"/>
          <xs:element name="hireDate" type="xs:date" minOccurs="1" maxOccurs="1"/>
          <xs:element name="title" type="TitleType" minOccurs="1" maxOccurs="1"/>
        </xs:sequence>
      </xs:complexType>
      <xs:simpleType name="TitleType">
        <xs:restriction base="xs:string">
          <xs:enumeration value ="Engineer"/>
          <xs:enumeration value ="Designer"/>
          <xs:enumeration value ="Manager"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:schema>
    
  6. Na pliku menu, kliknij przycisk Zapisz wszystko Aby zapisać wprowadzone zmiany, aby Pracownicy.XML i employees.xsd pliki.

Dołączanie schematu XML do dokumentu

Należy dołączyć schemat XML do dokumentu, aby powiązać DropDownListContentControl do prawidłowych wartości z title element.

Aby dołączyć schemat XML do dokumentu (Word 2013)

  1. Aktywacja EmployeeControls.docx w projektancie.

  2. Na Wstążce wybierz Developer kartę, a następnie wybierz Add-Ins przycisk.

  3. W Szablony i dodatki okno dialogowe Wybierz Schemat XML kartę, a następnie wybierz Dodaj schemat przycisk.

  4. Przejdź do employees.xsd schemat utworzony wcześniej, który znajduje się w katalogu projektu, a następnie wybierz Otwórz przycisk.

  5. Wybierz OK przycisk w Ustawienia schematu okno dialogowe.

  6. Wybierz OK przycisk, aby zamknąć Szablony i dodatki okno dialogowe.

Aby dołączyć schemat XML do dokumentu (Word 2010)

  1. Aktywacja EmployeeControls.docx w projektancie.

  2. Na Wstążce wybierz Developer kartę.

  3. W XML grupy, wybierz polecenie schematu przycisk.

  4. W Szablony i dodatki okno dialogowe Wybierz Schemat XML kartę, a następnie wybierz Dodaj schemat przycisk.

  5. Przejdź do employees.xsd schemat utworzony wcześniej, który znajduje się w katalogu projektu i wybierz polecenie Otwórz przycisk.

  6. Wybierz OK przycisk w Ustawienia schematu okno dialogowe.

  7. Wybierz OK przycisk, aby zamknąć Szablony i dodatki okno dialogowe.

    Struktury XML Otwiera okienko zadań.

  8. Zamknij Struktury XML okienko zadań.

Dodawanie część niestandardowy schemat XML do dokumentu

Zanim można powiązać formanty zawartości elementów w pliku XML, należy dodać zawartość pliku XML do nowego niestandardowa część kodu XML w dokumencie.

Aby dodać niestandardowa część kodu XML do dokumentu

  1. W Solution Explorer, otwórz menu skrótów dla ThisDocument.cs lub projekcie ThisDocument.vb, a następnie wybierz polecenie Widok Kod.

  2. Dodaj następujące deklaracje do ThisDocument klasy.Ten kod deklaruje kilku obiektów, które będą używane do dodawania niestandardowa część kodu XML w dokumencie.

    <Cached()> _
    Public employeeXMLPartID As String = String.Empty
    Private employeeXMLPart As Office.CustomXMLPart
    Private Const prefix As String = "xmlns:ns='https://schemas.microsoft.com/vsto/samples'"
    
    [CachedAttribute()]
    public string employeeXMLPartID = string.Empty;
    private Office.CustomXMLPart employeeXMLPart;
    private const string prefix = "xmlns:ns='https://schemas.microsoft.com/vsto/samples'";
    
  3. Dodaj następującą metodę do ThisDocument klasy.Metoda ta pobiera zawartość pliku danych XML, który jest osadzony jako zasób w zestawie i zwraca zawartość w postaci ciągu XML.

    Private Function GetXmlFromResource() As String 
        Dim asm As System.Reflection.Assembly = _
            System.Reflection.Assembly.GetExecutingAssembly()
        Dim stream1 As System.IO.Stream = asm.GetManifestResourceStream( _
                "EmployeeControls.employees.xml")
    
        Using resourceReader As System.IO.StreamReader = _
            New System.IO.StreamReader(stream1)
            If resourceReader IsNot Nothing Then 
                Return resourceReader.ReadToEnd()
            End If 
        End Using 
    
        Return Nothing 
    End Function
    
    private string GetXmlFromResource()
    {
        System.Reflection.Assembly asm =
            System.Reflection.Assembly.GetExecutingAssembly();
        System.IO.Stream stream1 = asm.GetManifestResourceStream(
            "EmployeeControls.employees.xml");
    
        using (System.IO.StreamReader resourceReader =
                new System.IO.StreamReader(stream1))
        {
            if (resourceReader != null)
            {
                return resourceReader.ReadToEnd();
            }
        }
    
        return null;
    }
    
  4. Dodaj następującą metodę do ThisDocument klasy.AddCustomXmlPart Metoda tworzy nową niestandardowa część kodu XML, który zawiera ciąg XML, który jest przekazywany do metody.

    Aby zapewnić, że niestandardowa część kodu XML jest tworzony tylko raz, ta metoda tworzy niestandardowy kod XML część tylko wtedy, gdy niestandardowa część kodu XML z pasującego identyfikatora GUID jeszcze nie istnieje w dokumencie.Metoda ta jest wywoływana, po raz pierwszy zapisuje wartość Id właściwość, aby employeeXMLPartID ciąg znaków.Wartość employeeXMLPartID ciąg jest zachowywane w dokumencie, ponieważ został uznany za pomocą CachedAttribute atrybut.

    Private Sub AddCustomXmlPart(ByVal xmlData As String)
        If xmlData IsNot Nothing Then
    
            employeeXMLPart = Me.CustomXMLParts.SelectByID(employeeXMLPartID)
            If (employeeXMLPart Is Nothing) Then
                employeeXMLPart = Me.CustomXMLParts.Add(xmlData)
                employeeXMLPart.NamespaceManager.AddNamespace("ns", _
                    "https://schemas.microsoft.com/vsto/samples")
                employeeXMLPartID = employeeXMLPart.Id
            End If 
        End If 
    End Sub
    
    private void AddCustomXmlPart(string xmlData)
    {
        if (xmlData != null)
        {
            employeeXMLPart = this.CustomXMLParts.SelectByID(employeeXMLPartID);
            if (employeeXMLPart == null)
            {
                employeeXMLPart = this.CustomXMLParts.Add(xmlData);
                employeeXMLPart.NamespaceManager.AddNamespace("ns", 
                    @"https://schemas.microsoft.com/vsto/samples");
                employeeXMLPartID = employeeXMLPart.Id;
            }
        }
    }
    

Powiązanie formantów zawartości do elementów w części niestandardowy schemat XML

Każdy formant zawartości powiązać element niestandardowa część kodu XML za pomocą XMLMapping właściwości każdego formantu zawartości.

Aby powiązać formanty zawartości elementów w niestandardowa część kodu XML

  • Dodaj następującą metodę do ThisDocument klasy.Ta metoda wiąże każdy formant zawartości z elementami niestandardowa część kodu XML i ustawia format wyświetlania daty DatePickerContentControl.

    Private Sub BindControlsToCustomXmlPart()
        Dim xPathName As String = "ns:employees/ns:employee/ns:name" 
        Me.PlainTextContentControl1.XMLMapping.SetMapping(xPathName, _
            prefix, employeeXMLPart)
    
        Dim xPathDate As String = "ns:employees/ns:employee/ns:hireDate" 
        Me.DatePickerContentControl1.DateDisplayFormat = "MMMM d, yyyy" 
        Me.DatePickerContentControl1.XMLMapping.SetMapping(xPathDate, _
            prefix, employeeXMLPart)
    
        Dim xPathTitle As String = "ns:employees/ns:employee/ns:title" 
        Me.DropDownListContentControl1.XMLMapping.SetMapping(xPathTitle, _
            prefix, employeeXMLPart)
    End Sub
    
    private void BindControlsToCustomXmlPart()
    {
        string xPathName = "ns:employees/ns:employee/ns:name";
        this.plainTextContentControl1.XMLMapping.SetMapping(xPathName,
            prefix, employeeXMLPart);
    
        string xPathDate = "ns:employees/ns:employee/ns:hireDate";
        this.datePickerContentControl1.DateDisplayFormat = "MMMM d, yyyy";
        this.datePickerContentControl1.XMLMapping.SetMapping(xPathDate,
            prefix, employeeXMLPart);
    
        string xPathTitle = "ns:employees/ns:employee/ns:title";
        this.dropDownListContentControl1.XMLMapping.SetMapping(xPathTitle,
            prefix, employeeXMLPart);
    }
    

Systemem swój kod gdy dokument jest otwarty

Utwórz niestandardowa część kodu XML i powiązać formanty niestandardowe dane, gdy dokument jest otwarty.

Do uruchomienia kodu, gdy dokument jest otwarty

  • Dodaj następujący kod, aby ThisDocument_Startup metody ThisDocument klasy.Ten kod pobiera ciąg XML z Pracownicy.XML plik, dodaje ciąg XML do nowego niestandardowa część kodu XML w dokumencie i powiązanie formantów zawartości do elementów w niestandardowa część kodu XML.

    Dim xmlData As String = GetXmlFromResource()
    If xmlData IsNot Nothing Then
        AddCustomXmlPart(xmlData)
        BindControlsToCustomXmlPart()
    End If
    
    string xmlData = GetXmlFromResource();
    
    if (xmlData != null)
    {
        AddCustomXmlPart(xmlData);
        BindControlsToCustomXmlPart();
    }
    

Testowanie projektu

Po otwarciu dokumentu, formanty zawartości wyświetlać dane z elementów w niestandardowa część kodu XML.Można kliknąć DropDownListContentControl można wybrać jedną z trzech wartości ważne dla title element, które są zdefiniowane w employees.xsd pliku.W przypadku edycji danych w każdym z formantów zawartości, nowe wartości są zapisywane w niestandardowa część kodu XML w dokumencie.

Aby przetestować formanty zawartości

  1. Naciśnij klawisz F5, aby uruchomić projekt.

  2. Sprawdź, czy tabela w dokumencie przypomina poniższą tabelę.Każdy z ciągów znaków w drugiej kolumnie są uzyskiwane z element niestandardowa część kodu XML w dokumencie.

    Nazwisko pracownika

    Karina Leal

    Data zatrudnienia

    1 Kwietnia 1999 r.

    Tytuł

    Menedżer

  3. Wybierz komórki na prawo od komórki nazwisko pracownika i wpisz inną nazwę.

  4. Wybierz komórki na prawo od komórki Data zatrudnienia i wybrać inną datę w okienku wyboru daty.

  5. Wybierz komórki na prawo od komórki z tytułu i zaznaczenie nowego elementu z listy rozwijanej.

  6. Zapisz i zamknij dokument.

  7. Eksplorator plików otwórz folder \bin\Debug w obszarze lokalizacja projektu.

  8. Otwórz menu skrótów dla EmployeeControls.docx, a następnie wybierz polecenie zmienić nazwę.

  9. Nazwa pliku EmployeeControls.docx.zip.

    Dokument EmployeeControls.docx jest zapisany w formacie Open XML.Zmieniając ten dokument z rozszerzeniem nazwy pliku .zip, można sprawdzić zawartość dokumentu.Aby uzyskać więcej informacji na temat Open XML, zobacz artykuł techniczny wprowadzenie (2007) formaty Office Open XML pliku.

  10. Otwórz plik EmployeeControls.docx.zip.

  11. Otwórz zawierają folder.

  12. Otwórz menu skrótów dla item2.xml , a następnie wybierz Otwórz.

    Ten plik zawiera niestandardowa część kodu XML, które dodane do dokumentu.

  13. Sprawdź, czy name, hireDate, i title elementy zawierają nowe wartości, które zostały wprowadzone do formantów zawartości w dokumencie.

  14. Zamknij item2.xml pliku.

Następne kroki

Można poznać więcej informacji na temat sposobu używania formantów zawartości następujących tematów:

Zobacz też

Zadania

Porady: dodawanie formantów zawartości do dokumentów programu Word

Porady: ochrona części dokumentów za pomocą formantów zawartości

Koncepcje

Automatyzowanie programu Word za pomocą obiektów rozszerzonych

Formanty zawartości

Przegląd obiektów hosta i formantów hosta

Ograniczenia programowe elementów hosta i formantów hosta

Dodawanie formantów do dokumentów pakietu Office w czasie wykonywania