Condividi tramite


XML Schema e dati nelle personalizzazioni a livello di documento

Importante   Le informazioni relative a Microsoft Word fornite in questo argomento vengono presentate esclusivamente a vantaggio e uso degli individui e delle organizzazioni che si trovano all'esterno degli Stati Uniti e dei relativi territori oppure che usano o sviluppano programmi eseguiti con prodotti Microsoft Word concessi in licenza da Microsoft prima del gennaio 2010, quando Microsoft ha rimosso da Microsoft Word un'implementazione di una determinata funzionalità correlata a XML personalizzato. Queste informazioni relative a Microsoft Word non possono essere lette o utilizzate dagli individui o delle organizzazioni che si trovano negli Stati Uniti o nei relativi territori oppure che usano o sviluppano programmi eseguiti con prodotti Microsoft Word concessi in licenza da Microsoft dopo il 10 gennaio 2010. Questi prodotti funzioneranno in modo diverso rispetto a quelli concessi in licenza prima di tale data oppure acquistati e concessi in licenza per l'uso all'esterno degli Stati Uniti.

Si applica a: le informazioni fornite in questo argomento sono valide per i progetti a livello di documento per Excel 2007, Excel 2010, Word 2007 e Word 2010. Per ulteriori informazioni, vedere Funzionalità disponibili in base ai tipi di progetto e applicazioni di Office.

Microsoft Office Excel e Microsoft Office Word forniscono le funzionalità per mappare gli schemi ai documenti. Queste funzionalità consentono di semplificare l'importazione e l'esportazione di dati XML da e nel documento.

In Visual Studio vengono esposti come controlli nel modello di programmazione gli elementi di schema mappati nelle personalizzazioni a livello di documento. Nel caso di Excel, in Visual Studio viene aggiunto il supporto per l'associazione dei controlli ai dati dei database, dei servizi Web e degli oggetti. Nel caso di Word ed Excel, in Visual Studio viene aggiunto il supporto per i riquadri delle azioni, che possono essere utilizzati con documenti dotati di mapping a schemi per migliorare le attività degli utenti con le soluzioni. Per ulteriori informazioni, vedere Cenni preliminari sul riquadro delle azioni.

Nota

Nelle soluzioni Excel non è possibile utilizzare schemi XML multipart.

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

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

Esistono due oggetti principali:

  • XML Schema (file XSD). Per ogni schema della cartella di lavoro, al progetto viene aggiunto uno schema che in Esplora soluzioni appare come elemento di progetto con estensione XSD.

  • Classe DataSet tipizzata. Questa classe viene creata in base allo schema. Questa classe Dataset è visibile in Visualizzazione classi.

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

Quando si mappa un elemento dello schema dal riquadro attività Origine XML a un foglio di lavoro, numerosi oggetti vengono automaticamente creati e aggiunti al progetto da Visual Studio.

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

  • Classe BindingSource. Quando si crea un controllo XmlMappedRange eseguendo il mapping di un elemento di schema non ripetitivo al foglio di lavoro, viene creata una classe BindingSource e il controllo XmlMappedRange viene associato alla classe BindingSource. È necessario associare la classe BindingSource a un'istanza dell'origine dati corrispondente allo schema mappato al documento, ad esempio un'istanza della classe DataSet tipizzata precedentemente creata. Creare l'associazione impostando le proprietà DataSource e DataMember, disponibili nella finestra Proprietà.

    Nota

    La classe BindingSource non viene creata per i controlli ListObject. È necessario associare manualmente all'origine dati il controllo ListObject mediante l'impostazione delle proprietà DataSource e DataMember nella finestra Proprietà.

Schemi mappati di Office e finestra Origini dati di Visual Studio

Sia la funzionalità degli schemi mappati di Office che la finestra Origini dati di Visual Studio possono rivelarsi utili per la presentazione di dati in un foglio di lavoro di Excel allo scopo di eseguirne il report o la modifica. In entrambi i casi, è possibile trascinare gli elementi di dati sul foglio di lavoro di Excel. I due metodi consentono di creare controlli che vengono associati a dati mediante una classe BindingSource a un'origine dati, come una classe DataSet o un servizio Web.

Nota

Quando si esegue il mapping di un elemento di schema ripetitivo a un foglio di lavoro, in Visual Studio viene creato un controllo ListObject. Tuttavia, tale controllo ListObject non viene associato automaticamente ai dati attraverso la classe BindingSource. È necessario associare manualmente all'origine dati il controllo ListObject mediante l'impostazione delle proprietà DataSource e DataMember nella finestra Proprietà.

Nella tabella riportata di seguito vengono evidenziate alcune delle differenze tra i due metodi.

XML Schema

Finestra Origini dati

Utilizza l'interfaccia di Office.

Utilizza la finestra Origini dati di Visual Studio.

Consente le funzionalità incorporate di Office per l'importazione e l'esportazione di dati da file XML.

È necessario fornire le funzionalità di importazione ed esportazione a livello di codice.

È necessario creare codice per riempire di dati i controlli generati.

I controlli aggiunti dalla finestra Origini dati vengono riempiti da codice generato automaticamente e dispongono delle stringhe di connessione necessarie quando si utilizzano i server database.

Comportamento con gli schemi collegati ai documenti di Word

Gli oggetti dati non vengono creati quando si associa uno schema a un documento di Word utilizzato in un progetto di Office a livello di documento. Vengono tuttavia creati dei controlli quando si mappa un elemento di schema al documento. Il tipo di controllo dipende dal tipo di elemento mappato. Gli elementi ripetitivi generano controlli XMLNodes, mentre gli elementi non ripetitivi generano controlli XMLNode. Per ulteriori informazioni, vedere Controllo XMLNodes e Controllo XMLNode.

Distribuzione di soluzioni che includono schemi XML

Per distribuire una soluzione che si avvale di uno schema XML mappato a un documento è necessario creare un programma di installazione. Il compito del programma di installazione sarà quello di registrare lo schema nella libreria degli schemi del computer dell'utente. Se non si registra lo schema, la soluzione potrà essere comunque utilizzata perché Word genera uno schema temporaneo basato sugli elementi presenti nel documento al momento dell'apertura. L'utente tuttavia non sarà in grado di eseguire la convalida o salvare lo schema utilizzato per creare il progetto. Per ulteriori informazioni sui programmi di installazione, vedere Distribuzione di applicazioni e componenti.

È inoltre possibile aggiungere codice al progetto per verificare se lo schema è presente nella libreria ed è stato registrato. In caso contrario, infatti, è possibile avvisare l'utente.

' Ensure that the schema is in the library and registered with the document.
Private Function CheckSchema() As Boolean

    Const namespaceUri As String = "http://schemas.contoso.com/projects"
    Dim namespaceFound As Boolean = False
    Dim namespaceRegistered As Boolean = False

    Dim n As Word.XMLNamespace
    For Each n In Application.XMLNamespaces
        If (n.URI = namespaceUri) Then
            namespaceFound = True
        End If
    Next

    If Not namespaceFound Then
        MessageBox.Show("XML Schema is not in library.")
        Return False
    End If

    Dim r As Word.XMLSchemaReference
    For Each r In Me.XMLSchemaReferences
        If (r.NamespaceURI = namespaceUri) Then
            namespaceRegistered = True
        End If
    Next

    If Not namespaceRegistered Then
        MessageBox.Show("XML Schema is not registered for this document.")
        Return False
    End If

    Return True
End Function
// 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;
}

Vedere anche

Attività

Procedura: effettuare il mapping degli schemi a documenti di Word in Visual Studio

Procedura: mappare schemi a fogli di lavoro in Visual Studio