Colonnes XML d'une géodatabase stockée dans PostgreSQL
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 PostgreSQL, vous pouvez utiliser des colonnes XML ArcSDE ou des colonnes XML PostgreSQL natives.
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 de la table sde_dbtune détermine le type de colonne XML utilisé. Par défaut, ce paramètre est défini sur le type de données XML PostgreSQL natif.
Colonnes XML dans ArcGIS for 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 contenant des documents XML dans un SGBD de type PostgreSQL
Vous pouvez utiliser deux types de colonne XML : XML ArcSDE ou le type XML natif de PostgreSQL. Le type de colonne XML que vous utilisez dans un jeu de données que vous créez dans votre géodatabase est déterminé par le paramètre XML_STORAGE de la table sde_dbtune.
Si vous utilisez le type XML PostgreSQL natif, aucune table système de géodatabase supplémentaire ne permet d'en effectuer le suivi ; pour cela les tables système de PostgreSQL doivent être utilisées.
Pour le type XML ArcSDE, trois tables système de géodatabase servent à gérer les 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_doc<ID_colonne> et sde_xml_idx_<ID_colonne>. Ces tables appartiennent à l'utilisateur propriétaire de la table métier contenant le document XML.
ArcGIS crée les tables ci-après, permettant de stocker et d'indexer les documents XML.
Ne modifiez aucune de ces tables à l'aide de SQL.
Lorsque vous ajoutez une colonne à une table métier pour le stockage de documents XML, un enregistrement est ajouté à la table des colonnes XML. Cette table existe en un exemplaire dans chaque géodatabase 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 la clé étrangère de la table système table_registry |
NOT NULL |
column_name |
varchar(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 |
varchar(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. |
|
xflags |
integer |
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 un enregistrement 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 |
varchar(32) |
Nom de l'index XPath |
NOT NULL |
propriétaire |
varchar(32) |
Utilisateur de base de données propriétaire de la colonne XML |
NOT NULL |
index_type |
entier |
Valeur indiquant le type d'index XPath La valeur est 2 pour le type d'index SE_XML_INDEX_DEFINITION et 1 pour le type d'index SE_XML_INDEX_TEMPLATE. |
NOT NULL |
description |
varchar(64) |
Texte identifiant l'index XPath Si un fichier de définition d'index est utilisé pour la création de l'index, la description de l'index peut être spécifiée en début de fichier. |
Une colonne contenant un document XML peut éventuellement disposer d'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 un enregistrement 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 |
varchar(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 est indexé comme un nombre, comme varchar, ou comme texte. La valeur 1 indique l'indexation du contenu de la balise comme texte, la valeur 2 indique l'indexation du contenu de la balise comme nombre et la valeur 3 indique l'indexation du contenu de la balise comme 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. |
|
description |
varchar(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 = inclus dans l'index XPath, 1 = exclu de l'index XPath. |
NOT NULL |
La table sde_xml_doc<ID_colonne> stocke le document XML et contient un index de texte intégral du contenu du document. La base de données ArcSDE comprend une table de ce type pour chaque colonne contenant un document XML. Le nombre dans le nom de table est l'identifiant de la colonne. Cette table contient un enregistrement 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 si des conflits sont détectés lors de l'ajout du contenu d'un document XML à l'index Xpath ; 1 = un conflit a été détecté, par exemple, lorsqu'un élément est supposé être indexé numériquement alors que le document contient une chaîne de cet élément. |
|
xml_doc |
bytea |
Document XML |
NOT NULL |
xml_doc_val |
bytea |
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. |
La table sde_xml_idx<ID_colonne> est créée pour les colonnes XML disposant d'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 contenant le document 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 |
double précision |
Valeur indexée, lorsque la balise est définie comme double précision dans la définition d'index XPath |
|
string_tag |
varchar(256) |
Valeur indexée, lorsque la balise est définie comme varchar dans la définition d'index XPath |
|
text_tag |
Texte |
Valeur indexée, lorsque la balise est définie comme STRING dans la définition d'index XPath |
Voici le diagramme d'une table comprenant une colonne contenant un document 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 contenant un document XML dans un document d'espace de travail XML
Une table comprenant une colonne contenant un document XML ne peut pas être exportée vers un document d'espace de travail XML. Elle peut toutefois être exportée vers un jeu d'enregistrements XML.