Condividi tramite


XML Schema e dati nelle personalizzazioni a livello di documento

Importante Le informazioni illustrate in questo argomento relative a Microsoft Word vengono presentate esclusivamente per il vantaggio e l'uso di utenti e organizzazioni che si trovano al di fuori del Stati Uniti e dei suoi territori o che utilizzano o sviluppano programmi in esecuzione su prodotti Microsoft Word concessi in licenza da Microsoft prima del gennaio 2010, quando Microsoft ha rimosso un'implementazione di particolari funzionalità correlate al codice XML personalizzato da Microsoft Parola. Queste informazioni relative a Microsoft Word non possono essere lette o usate da utenti o organizzazioni nel Stati Uniti o nei suoi territori che utilizzano o sviluppano programmi in esecuzione su prodotti Di Microsoft Word concessi in licenza da Microsoft dopo il 10 gennaio 2010; tali prodotti non si comportano come prodotti concessi in licenza prima di tale data o acquistati e concessi in licenza per l'utilizzo al di fuori del Stati Uniti.

Si applica a: le informazioni contenute in questo argomento si applicano ai progetti a livello di documento per Excel e Word. Per altre informazioni, vedere Funzionalità disponibili per app Office lication e tipo di progetto.

Microsoft Office Excel e Microsoft Office Word offrono la possibilità di eseguire il mapping degli schemi ai documenti. Questa funzionalità consente di semplificare l'importazione e l'esportazione di dati XML all'interno e all'esterno del documento.

Visual Studio espone gli elementi dello schema mappati nelle personalizzazioni a livello di documento come controlli nel modello di programmazione. Per Excel, Visual Studio aggiunge il supporto per l'associazione dei controlli ai dati nei database, nei servizi Web e negli oggetti. Per Word ed Excel, Visual Studio aggiunge il supporto per i riquadri azioni, che possono essere usati con un documento mappato allo schema per creare un'esperienza utente finale avanzata per le soluzioni. Per altre informazioni, vedere Panoramica del riquadro Azioni.

Nota

Non è possibile utilizzare xml schema multipart nelle soluzioni Excel.

Oggetti creati quando gli schemi vengono collegati alle cartelle di lavoro di Excel

Quando si collega uno schema a una cartella di lavoro, Visual Studio crea automaticamente diversi oggetti e li aggiunge al progetto. Questi oggetti non devono essere eliminati usando gli strumenti di Visual Studio, perché sono gestiti da Excel. Per eliminarli, rimuovere gli elementi mappati dal foglio di lavoro o scollegare lo schema utilizzando gli strumenti di Excel.

Esistono due oggetti principali:

  • XML Schema (file XSD). Per ogni schema nella cartella di lavoro, Visual Studio aggiunge uno schema al progetto. Viene visualizzato come elemento di progetto con un'estensione XSD in Esplora soluzioni.

  • Una classe DataSet tipizzata. Questa classe viene creata in base allo schema. Questa classe del set di dati è visibile in Visualizzazione classi.

Oggetti creati quando gli elementi dello schema vengono mappati ai fogli di lavoro di Excel

Quando si esegue il mapping di un elemento dello schema dal riquadro attività Origine XML a un foglio di lavoro, Visual Studio crea automaticamente diversi oggetti e li aggiunge al progetto:

  • Controlli. Per ogni oggetto mappato nella cartella di lavoro, viene creato un XmlMappedRange controllo (per gli elementi dello schema non ripetuti) o un ListObject controllo (per gli elementi dello schema ripetuti) nel modello di programmazione. Il ListObject controllo può essere eliminato solo eliminando i mapping e gli oggetti mappati dalla cartella di lavoro. Per altre informazioni sui controlli, vedere Panoramica degli elementi host e dei controlli host.

  • Bindingsource. Quando si crea un oggetto XmlMappedRange eseguendo il mapping di un elemento dello schema non ripetuto al foglio di lavoro, viene creato un BindingSource oggetto e il XmlMappedRange controllo è associato a BindingSource. È necessario associare l'oggetto a un'istanza BindingSource dell'origine dati che corrisponde allo schema mappato al documento, ad esempio un'istanza della classe tipizzata DataSet creata. Creare l'associazione impostando le DataSource proprietà e DataMember esposte nella finestra Proprietà .

    Nota

    L'oggetto BindingSource non viene creato per ListObject gli oggetti . È necessario associare manualmente l'oggetto ListObject all'origine dati impostando le DataSource proprietà e DataMember nella finestra Proprietà .

Schemi mappati di Office e finestra Origini dati di Visual Studio

Sia la funzionalità dello schema mappato di Office che la finestra Origini dati di Visual Studio consentono di presentare i dati in un foglio di lavoro di Excel per la creazione di report o la modifica. In entrambi i casi è possibile trascinare gli elementi dati nel foglio di lavoro di Excel. Entrambi i metodi creano controlli associati a un BindingSource oggetto a un'origine dati, ad esempio un DataSet servizio Web o .

Nota

Quando si esegue il mapping di un elemento dello schema ripetuto a un foglio di lavoro, Visual Studio crea un oggetto ListObject. l'oggetto ListObject non è associato automaticamente ai dati tramite .BindingSource È necessario associare manualmente l'oggetto ListObject all'origine dati impostando le DataSource proprietà e DataMember nella finestra Proprietà .

La tabella seguente illustra alcune delle differenze tra i due metodi.

XML Schema Finestra Origini dati
Usa l'interfaccia di Office. Usa la finestra Origini dati in Visual Studio.
Abilita le funzionalità predefinite di Office per l'importazione e l'esportazione di dati da file XML. È necessario fornire funzionalità di importazione ed esportazione a livello di codice.
È necessario scrivere codice per riempire i controlli generati con i dati. I controlli aggiunti dalla finestra Origini dati hanno generato automaticamente il codice per riempirli, insieme alle stringa di connessione necessarie quando si usano i server di database.

Comportamento quando gli schemi vengono allegati ai documenti di Word

Gli oggetti dati non vengono creati quando si collega uno schema a un documento di Word utilizzato in un progetto office a livello di documento. Tuttavia, quando si esegue il mapping di un elemento dello schema al documento, vengono creati controlli. Il tipo di controllo dipende dal tipo di elemento mappato; gli elementi ripetuti generano XMLNodes controlli e gli elementi non ripetuti generano XMLNode controlli. Per altre informazioni, vedere Controllo XMLNodes e controllo XMLNode.

Distribuzione di soluzioni che includono XML Schema

È necessario creare un programma di installazione per distribuire una soluzione che usa uno schema XML mappato a un documento. Il programma di installazione deve registrare lo schema nella libreria di schemi nel computer dell'utente. Se non si registra lo schema, la soluzione funzionerà comunque perché Word genera uno schema temporaneo in base agli elementi presenti nel documento quando l'utente lo apre. Tuttavia, l'utente non sarà in grado di eseguire la convalida o salvare lo schema usato per creare il progetto. Per altre informazioni sui programmi di installazione, vedere Distribuire applicazioni, servizi e componenti.

È anche possibile aggiungere codice al progetto per verificare se lo schema si trova nella libreria e registrato. In caso contrario, è possibile avvisare l'utente.

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