Udostępnij za pośrednictwem


Instruktaż: Powiązanie formantów zawartości do części XML niestandardowe

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

Dotyczy: Informacje przedstawione w tym temacie dotyczą projektów na poziomie dokumentu dla programu Word 2013 i Word 2010. Aby uzyskać więcej informacji, zobacz Funkcje dostępne w aplikacji pakietu Office i typ projektu.

Program Word umożliwia przechowywanie danych XML o nazwie niestandardowe elementy XML, w dokumencie.Wyświetlanie tych danych można sterować przez powiązanie formantów zawartości do elementów w niestandardowa część kodu XML.Przykładowy dokument w tym 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 tym instruktażu przedstawiono następujące zadania:

  • Dodawanie formantów zawartości do dokumentu programu Word w projekcie na 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 danym komputerze mogą być używane inne nazwy lub lokalizacje pewnych elementów interfejsu użytkownika programu Visual Studio, które są używane w poniższych instrukcjach. Używana wersja programu Visual Studio oraz jej ustawienia określają te elementy. Aby uzyskać więcej informacji, zobacz Visual Studio, ustawienia.

Wymagania wstępne

Potrzebne do przeprowadzenia tego instruktażu następujące składniki:

-

Wersja Visual Studio 2012 zawierająca narzędzia dla deweloperów pakietu Microsoft Office. Aby uzyskać więcej informacji, zobacz [Konfigurowanie komputera do opracowywania rozwiązań pakietu Office](bb398242\(v=vs.110\).md).
  • Word 2013or Word 2010.

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

Tworzenie nowego projektu dokumentu programu Word

Tworzenie dokumentu programu Word, który będzie używany w instruktażu.

Aby utworzyć nowy projekt dokumentu programu Word

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

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

Dodawanie formantów zawartości do dokumentu

Tworzenie tabeli, która zawiera trzy różne typy formantów zawartości, gdzie użytkownik może wyświetlić lub edytować informacje o pracowniku.

Aby dodać formanty zawartości w dokumencie

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

  2. W tabele grupy, kliknij przycisk Tabelai 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, kliknij w pierwszym rzędzie (obok Nazwisko pracownika).

  5. Kliknij na Wstążce, autora kartę.

    [!UWAGA]

    Jeśli autora karta nie jest widoczna, najpierw należy wyświetlić.Aby uzyskać więcej informacji, zobacz Jak: Pokaż kartę Deweloper na Wstążce.

  6. W kontroli grupy, kliknij przycisk Text przycisk Obiekt PlainTextContentControl Aby dodać PlainTextContentControl do pierwszej komórki.

  7. W drugiej kolumnie tabeli, kliknij w drugim rzędzie (obok Data zatrudnienia).

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

  9. W drugiej kolumnie tabeli, kliknij w trzecim rzędzie (obok Tytuł).

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

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

Tworzenie pliku danych XML

Zazwyczaj będą uzyskiwać dane XML do przechowywania w niestandardowa część kodu XML z zewnętrznego źródła, na przykład pliku lub bazie danych.W tym instruktażu służy do tworzenia pliku XML, który zawiera dane pracownika, oznaczone przez elementy, które będzie można 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 Projekt menu, kliknij przycisk Dodaj nowy element.

    Dodaj nowy element pojawi się okno dialogowe.

  2. W Szablony okienka, a następnie kliknij polecenie Wybierz Pliku XML.

  3. Nazwa pliku Pracownicy.XML, a następnie kliknij przycisk Dodaj.

    Pracownicy.XML plik zostanie otwarty w edytorze kodu.

  4. Zastępowanie zawartości Pracownicy.XML pliku następujący tekst.

    <?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, kliknij Pracownicy.XML.

  6. W Właściwości okno, 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 jednego elementu w niestandardowa część kodu XML, nie musisz użyć schematu XML.Jednak 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.Schemat XML określa możliwe wartości dla title element.Będą wiązać DropDownListContentControl do tego elementu w dalszej części tego instruktażu.

Aby utworzyć schemat XML

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

    Dodaj nowy element pojawi się okno dialogowe.

  2. W Szablony okienka, a następnie kliknij polecenie Wybierz Schemat XML.

  3. Nazwa schematu employees.xsd i kliknij przycisk Dodaj.

    Zostanie otwarty projektant schematu.

  4. W Solution Explorer, kliknij prawym przyciskiem myszy employees.xsd, a następnie kliknij przycisk Widok Kod.

  5. Zastępowanie zawartości 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 wszystkie Aby zapisać zmiany do 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, title element.

Aby dołączyć schemat XML do dokumentu

  1. Aktywacja EmployeeControls.docx w projektancie.

  2. Kliknij na Wstążce, autora kartę.

  3. W XML grupy, kliknij przycisk schemat.

  4. W Szablony i dodatki okno dialogowe, kliknij przycisk Schemat XML , a następnie kliknij pozycję Dodaj schemat.

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

  6. Kliknij przycisk OK w Ustawienia schematu okno dialogowe.

  7. Kliknij przycisk OK zamknąć Szablony i dodatki okno dialogowe.

    Struktury XML okienko zadań otwiera.

  8. Zamknij Struktury XML okienko zadań.

Dodawanie niestandardowych część XML do dokumentu

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

Aby dodać niestandardowe części XML do dokumentu

  1. W Solution Explorer, kliknij prawym przyciskiem myszy ThisDocument.cs lub projekcie ThisDocument.vb, a następnie kliknij przycisk Widok Kod.

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

    <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ść jako ciąg znaków 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 nowy 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, metoda tworzy niestandardowy kod XML część tylko, jeśli niestandardowa część kodu XML z pasującego identyfikatora GUID jeszcze nie istnieje w dokumencie.Ta metoda jest wywoływana, po raz pierwszy zapisuje wartość Id właściwość, aby employeeXMLPartID ciąg.Wartość employeeXMLPartID ciąg jest zachowywane w dokumencie, ponieważ został on 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 XML niestandardowe

Powiązać każdego formantu zawartości elementu w niestandardowa część kodu XML za pomocą XMLMapping właściwości każdego formantu zawartości.

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

  • Dodaj następującą metodę do ThisDocument klasy.Ta metoda wiąże każdego formantu zawartości elementu w 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);
    }
    

Kolejny swój kod gdy dokument jest otwarty.

Tworzenie niestandardowych part XML i powiązać formantów niestandardowych danych, gdy dokument jest otwarty.

Do uruchomienia kodu, gdy dokument jest otwarty

  • Dodaj następujący kod do ThisDocument_Startup metoda ThisDocument klasy.Ten kod pobiera ciąg XML, z Pracownicy.XML pliku, dodaje ciąg XML do nowych niestandardowa część kodu XML w dokumencie i wiąże 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świetlić dane z elementów w niestandardowa część kodu XML.Można kliknąć DropDownListContentControl aby wybrać jedną z trzech prawidłowe wartości 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. Zweryfikuj, że tabela w dokumencie przypomina poniższą tabelę.Każdy z ciągów znaków w drugiej kolumnie są uzyskiwane z elementem niestandardowa część kodu XML w dokumencie.

    Nazwisko pracownika

    Karina Leal

    Data zatrudnienia

    1 Kwietnia 1999 r.

    Tytuł

    Menedżer

  3. Kliknij komórkę z prawej strony komórki nazwisko pracownika, a następnie wpisz inną nazwę.

  4. Kliknij komórkę z prawej strony komórki Data zatrudnienia i wybrać inną datę w polu wyboru.

  5. Kliknij komórkę z prawej strony komórki tytuł i wybierz nowy element z listy rozwijanej.

  6. Zapisz i zamknij dokument.

  7. Eksplorator plików otwórz folder \bin\Debug w folderze w projekcie.

  8. Kliknij prawym przyciskiem myszy EmployeeControls.docx, a następnie kliknij przycisk Zmień nazwę.

  9. Nazwa pliku EmployeeControls.docx.zip.

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

  10. Kliknij dwukrotnie plik EmployeeControls.docx.zip.

  11. Kliknij dwukrotnie zawierają folder.

  12. Kliknij prawym przyciskiem myszy item2.xml , a następnie kliknij przycisk Otwórz.

    Ten plik zawiera niestandardowe część XML, która dodaje 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

Więcej o tym, jak używać formantów zawartości z tych tematów można uzyskać:

Zobacz też

Zadania

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

Jak: ochrona części dokumentów przy użyciu formantów zawartości

Koncepcje

Automatyzowanie programu Word przy użyciu obiektów rozszerzony

Formanty zawartości

Elementy hosta i Omówienie kontroli hosta

Ograniczenia programowy hosta elementów i kontrolek hosta

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