Colonnes XML d'une géodatabase dans SQL Server
Le format XML est un standard ouvert permettant de définir des éléments de données dans des documents. Pour stocker des données XML dans une base de données Microsoft SQL Server, vous pouvez utiliser des colonnes XML natives ou XML ArcSDE.
Vous pouvez stocker des documents XML définis par l'utilisateur dans l'un ou l'autre de ces types de XML. Le paramètre XML_COLUMN_STORAGE DBTUNE contrôle le type de XML utilisé. Par défaut, il est défini sur DB_XML. Le type de données XML SQL Server natif est donc utilisé par défaut.
Si vous avez l'intention d'utiliser des requêtes Xpath sur des colonnes XML SQL Server natives, vous devez aussi créer des catalogues de texte intégral. Pour plus d'informations, consultez la documentation SQL Server.
Avec les types de données XML ArcSDE, il est nécessaire d'activer la recherche de texte intégral pour la base de données SQL Server et de créer un catalogue de texte intégral. Pour plus d'informations sur ces procédures, reportez-vous à Préparation de SQL Server en vue du stockage de colonnes XML ArcSDE et à Création d'un catalogue de texte intégral dans SQL Server.
Les types de données ArcSDE XML permettent de stocker des ensembles de documents de métadonnées utiles aux services de métadonnées ArcIMS. Par conséquent, si vous utilisez des Services de métadonnées ArcIMS, vous devez définir le paramètre XML_COLUMN_STORAGE sur SDE_XML.
Colonnes XML dans ArcGIS Desktop
Les colonnes XML ne sont que partiellement prises en charge dans la géodatabase. Par conséquent, les éléments suivants sont vrais :
- Il est impossible d'afficher le contenu de la colonne XML d'une table dans ArcCatalog. L'affichage de la colonne est vierge ou contient des caractères inintelligibles.
- Dans l'onglet Champs de la boîte de dialogue Propriétés de la table, aucun type de données n'est affiché pour une colonne XML.
- Il est impossible de copier-coller une table contenant une colonne XML d'une géodatabase à l'autre.
- En cas d'importation ou d'exportation de la table à l'aide d'outils de géotraitement, la colonne XML doit être exclue.
- Vous ne pouvez pas enregistrer comme versionnée une table avec une colonne XML à l'aide d'ArcCatalog.
- La colonne XML d'une table s'affiche vierge dans ArcMap.
- Pour modifier une table contenant une colonne XML dans ArcMap, il est possible d'utiliser une session de mise à jour non versionnée. Toutefois il n'est pas possible de modifier la colonne XML, uniquement les autres champs de la table.
Colonnes XML dans un SGBD de type SQL Server
Trois tables système ArcSDE permettent de gérer des colonnes XML : SDE_xml_columns, SDE_xml_index_tags et SDE_xml_indexes. Ces tables appartiennent à l'administrateur ArcSDE. ArcSDE crée également, pour chaque colonne XML, deux tables supplémentaires permettant de stocker et d'indexer des documents XML : SDE_xml_document et SDE_xml_xpath_index. Ces tables appartiennent à l'utilisateur propriétaire de la table métier contenant la colonne XML.
ArcSDE crée les tables suivantes, permettant de stocker et d'indexer des documents XML.
Ne modifiez aucune de ces tables à l'aide de SQL.
Lorsque vous ajoutez une colonne XML à une table métier, une ligne est ajoutée à la table des colonnes XML. Cette table existe en un exemplaire dans chaque base de données ArcSDE.
Nom du champ |
Type de champ |
Description |
Nul ? |
---|---|---|---|
id_colonne |
entier |
Identifiant de la colonne XML et clé primaire de la table Cette valeur est attribuée par ArcSDE lors de la création de la colonne XML. |
NOT NULL |
registration_id |
entier |
Identifiant de la table métier contenant la colonne XML et clé étrangère de la table système SDE_table_registry. |
NOT NULL |
column_name |
nvarchar(32) |
Nom de la colonne XML de la table métier |
NOT NULL |
index_id |
entier |
Identifiant de l'index XPath associé à la colonne XML, si elle existe, et clé étrangère de la table SDE_xml_indexes. |
|
minimum_id |
entier |
Valeur du nombre initialement utilisé dans la colonne XML de la table métier pour l'identification des différents documents XML |
|
config_keyword |
nvarchar(32) |
Mot-clé de configuration DBTUNE dont les paramètres déterminent la méthode de définition dans la base de données des documents XML, des tables d'index XML XPath et des index de texte créés pour ces tables Pour plus d'informations, reportez-vous à Paramètres pour ArcSDE XML dans SQL Server. |
|
xflags |
entier |
Valeur indiquant si les documents originaux dans la table de document XML sont stockés au format compressé ou décompressé. Par défaut, les documents sont compressés ; les documents compressés offrent de meilleures performances. |
NOT NULL |
Cette table existe en un exemplaire dans chaque base de données ArcSDE. Elle comprend une ligne pour chaque colonne XML ayant un index XPath.
Nom du champ |
Type de champ |
Description |
Nul ? |
---|---|---|---|
index_id |
entier |
Identifiant de l'index XPath et clé primaire de la table |
NOT NULL |
index_name |
nvarchar(32) |
Nom de l'index XPath Pour les index XPath associés à un service de métadonnées ArcIMS, ce nom est "ims_xml#", où # est l'identifiant de la colonne XML dans la table métier du service de métadonnées. |
NOT NULL |
propriétaire |
nvarchar(32) |
Utilisateur de base de données propriétaire de la colonne XML Pour les services de métadonnées ArcIMS, il s'agit de l'utilisateur spécifié dans le fichier de configuration du service ArcXML. |
NOT NULL |
index_type |
entier |
Valeur indiquant le type d'index XPath Dans les versions ArcSDE à partir de 9.1, la valeur est 2 pour le type d'index SE_XML_INDEX_DEFINITION et 1 pour le type d'index SE_XML_INDEX_TEMPLATE. Pour les index XPath associés à un service de métadonnées ArcIMS, le type d'index SE_XML_INDEX_DEFINITION est seul pris en charge. |
NOT NULL |
description |
nvarchar(64) |
Texte identifiant l'index XPath Si un fichier de définition d'index a été utilisé pour la création de l'index, la description de celui-ci peut être spécifiée en début de fichier. |
Une colonne XML peut avoir un index XPath permettant la recherche du contenu d'un élément ou d'un attribut XML spécifique dans chaque document. La liste des éléments et des attributs compris ou non dans un index XPath donné est enregistrée dans cette table.
Cette table existe en un exemplaire dans chaque base de données ArcSDE. Elle comprend une ligne pour chaque XPath associé à l'index XPath d'une colonne XML.
Nom du champ |
Type de champ |
Description |
Nul ? |
---|---|---|---|
index_id |
entier |
Identifiant de l'index XPath associé à une colonne XML, si elle existe et clé étrangère de la table SDE_xml_indexes. |
NOT NULL |
tag_id |
entier |
Identifiant d'un XPath ou d'une balise |
NOT NULL |
tag_name |
nvarchar(1024) |
Chemin XPath absolu identifiant un élément ou un attribut XML pouvant être présent dans un document XML Par exemple, /metadata/mdDateSt identifie un élément XML et /metadata/dataIdInfo/tpCat/TopicCatCd/@value identifie un attribut XML. Les chemins XPath ne doivent pas contenir d'astérisques (*) pour faire référence à un groupe d'éléments ou d'attributs XML — chaque élément ou attribut est adressé de manière exacte à l'aide du XPath spécifié dans cette table. Les éléments ne peuvent pas être nommés * dans un document XML valide. |
NOT NULL |
data_type |
entier |
Valeur indiquant si l'élément ou l'attribut XML sera indexé en tant que nombre, varchar ou texte. Une valeur de 1 indique que le contenu de la balise sera indexé comme texte ; une valeur de 2 indique que le contenu de la balise sera indexé comme un nombre ; une valeur de 3 indique que le contenu de la balise sera indexé comme un varchar. |
NOT NULL |
tag_alias |
entier |
Nombre permettant d'identifier un XPath Par exemple, le protocole de communication Z39.50 utilise des codes numériques pour faire référence au contenu pouvant faire l'objet d'une recherche. Cette colonne n'est pas utilisée par le Connecteur Z39.50 d'ArcIMS. |
|
description |
nvarchar(64) |
Texte identifiant le contenu qui doit figurer dans l'élément ou dans l'attribut XML |
|
is_excluded |
entier |
Valeur indiquant si l'élément XML fait partie de l'index XPath ou non 0 = le XPath est inclus ; 1 = le XPath est exclu. |
NOT NULL |
La table SDE_xml_doc<id_colonne> stocke le document XML et un index de texte intégral sur le contenu du document. La base de données ArcSDE contient l'une de ces tables pour chaque colonne XML. Le nombre dans le nom de table est l'identifiant de la colonne XML. Cette table contient une ligne par document XML stocké dans la colonne XML.
Nom du champ |
Type de champ |
Description |
Nul ? |
---|---|---|---|
sde_xml_id |
entier |
Identifiant d'un document XML stocké dans la colonne XML et clé primaire de la table |
NOT NULL |
doc_property |
entier |
Valeur indiquant la présence ou l'absence de conflits lors de l'ajout du contenu d'un document XML à l'index XPath 1 = conflit existant ; par exemple, lorsqu'un élément est supposé être indexé numériquement mais le document contient à la place une chaîne de caractères dans cet élément. valeur NULL = absence de problèmes lors de l'indexation du document. |
NOT NULL |
xml_doc |
varbinarymax |
Document XML |
NOT NULL |
xml_doc_val |
varbinarymax |
Contenu du document XML entier après suppression des balises XML et des autres balisages Par défaut, l'index de texte est créé sur cette colonne ; cet index permet de répondre aux requêtes de texte intégral. Pour les services de métadonnées ArcIMS, cet index permet de répondre aux requêtes FULLTEXT. |
NOT NULL |
sde_time_stamp |
timestamp |
Permet la prise en charge des mises à jour incrémentielles de l'index de texte |
NOT NULL |
La table SDE_xml_idx<id_colonne> est créée à partir des colonnes XML qui ont un index de texte XPath. Cette table stocke le texte ou le contenu pour chaque XPath indexé.
L'identifiant dans le nom de table est le numéro d'enregistrement interne de la colonne XML.
Nom du champ |
Type de champ |
Description |
Nul ? |
---|---|---|---|
xml_key_column |
entier |
Identifiant de la valeur indexée et clé primaire de la table |
NOT NULL |
sde_xml_id |
entier |
Identifiant du document XML contenant la valeur indexée |
NOT NULL |
tag_id |
entier |
Identifiant de la balise associée à l'index XPath de la colonne XML, identifiant l'emplacement de stockage de la valeur dans le document |
NOT NULL |
double_tag |
réel simple |
Valeur indexée, lorsque la balise est définie comme DOUBLE dans la définition d'index XPath |
|
string_tag |
nvarchar(256) |
Valeur indexée, lorsque la balise est définie comme VARCHAR dans la définition d'index XPath |
|
text_tag |
ntext |
Valeur indexée, lorsque la balise est définie comme STRING dans la définition d'index XPath |
|
sde_time_stamp |
timestamp |
Permet la prise en charge des mises à jour incrémentielles de l'index de texte |
NOT NULL |
Voici le diagramme d'une table contenant une colonne XML et des tables système permettant d'assurer son suivi. Les lignes pointillées indiquent des relations implicites entre les tables, les traits pleins indiquent des relations explicitement définies.
Colonnes XML dans un document XML
Il est impossible d'exporter une table contenant une colonne XML dans un document d'espace de travail XML. Il est possible de l'exporter dans un jeu d'enregistrements XML, mais rien ne distingue la colonne comme étant une colonne XML, dans le document.