XML Schema e dati nelle personalizzazioni a livello di documento
importante le informazioni relative in questo argomento relative a Microsoft Word è verificato esclusivamente per il vantaggio e l'utilizzo degli utenti e le organizzazioni che si trovano fuori dagli Stati Uniti e i relativi territori, o sviluppano programmi eseguiti con prodotti, Microsoft Word che sono stati concessi in licenza da Microsoft prima del gennaio 2010, quando È stato rimosso un'implementazione di determinata funzionalità correlata alla classe personalizzata XML da Microsoft Word.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 2013, Excel 2010, Word 2013 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 schemache 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