Il existe plusieurs colonnes XML dans les tables GDB_Items et GDB_ItemRelationships, qui contiennent les informations sur la structure et les relations des éléments.Une colonne en particulier, la colonne Définition dans la table GDB_Items, est indispensable pour obtenir des informations détaillées sur une géodatabase.Le type de document XML qu'elle contient dépend du type d'élément spécifique, par exemple, la définition d'une classe d'entités contient des informations sur les champs de la table, les domaines utilisés, les sous-types, la référence spatiale, et la participation du jeu de données du contrôleur, entre autres choses.
La méthode la plus simple pour utiliser une valeur de colonne XML est de récupérer le document entier dans la base de données et de l'utiliser localement.Vous pouvez par exemple, enregistrer le document XML en tant que fichier et l'afficher dans une visionneuse de texte ou XML.Les développeurs utilisant des langages tels que Java, C++, ou C# préféreront peut-être lire le document dans un DOM.Pour les développeurs SQL, les fonctions XML de base de données peuvent permettre d'extraire des valeurs spécifiques dans les définitions d'élément à l'aide de Xpath (langage de requête pour les documents XML).
La définition d'un domaine par plage constitue un exemple simple de définition d'élément.Le document XML suivant constitue une définition de domaine par plage standard :
<? xml version = "1.0" encoding="utf-8"?>
<GPRangeDomain2
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xmlns:xs = "http://www.w3.org/2001/XMLSchema"
xmlns:typens = "http://www.esri.com/schemas/ArcGIS/10.0"
xsi:type = "typens:GPRangeDomain2">
<DomainName>Angle</DomainName>
<FieldType>esriFieldTypeInteger</FieldType>
<MergePolicy>esriMPTDefaultValue</MergePolicy>
<SplitPolicy>esriSPTDuplicate</SplitPolicy>
<Description>Valid rotation angles</Description>
<Owner>harley</Owner>
<MaxValue xsi:type = "xs:int">359</MaxValue>
<MinValue xsi:type = "xs:int">0</MinValue>
</GPRangeDomain2>
En général, les deux valeurs les plus importantes pour un domaine par plage sont les valeurs minimum et maximum.Les expressions XPath qui représentent ces éléments sont /GPRangeDomain2/MinValue et /GPRangeDomain2/MaxValue, respectivement. Cette requête SQL indique comment extraire ces valeurs pour un domaine par plage spécifique :
--Queries an sde-schema geodatabase in SQL Server
SELECT
Definition.value('(/GPRangeDomain2/MinValue)[1]','nvarchar(max)') AS "MinValue",
Definition.value('(/GPRangeDomain2/MaxValue)[1]','nvarchar(max)') AS "MaxValue"
FROM
sde.GDB_ITEMS INNER JOIN sde.GDB_ITEMTYPES
ON sde.GDB_ITEMS.Type = sde.GDB_ITEMTYPES.UUID
WHERE
sde.GDB_ITEMS.Name = 'Angle' AND
sde.GDB_ITEMTYPES.Name = 'Range Domain'
MinValue MaxValue
0 359
Dans un exemple simple comme le précédent, il est facile de trouver les XPath des informations que vous souhaitez extraire.Toutefois, pour des solutions plus complexes, consultez le livre blanc XML Schema of the Geodatabase, et notamment l'annexe destinée aux développeurs qui utilisent des tables système.
Les autres colonnes XML des tables système peuvent être interrogées de la même façon que la colonne Définition de la table GDB_Items, mais notez bien qu'aucune structure XML n'est définie par la géodatabase pour la colonne Documentation.La colonne Documentation stocke les métadonnées associées aux éléments de géodatabase.Toutefois, l'ensemble exact d'éléments de métadonnées qu'elle contient varie d'une organisation à l'autre, en fonction de la norme de métadonnées et du workflow de gestion des informations qu'elles adoptent.Un DTD XML décrivant la structure de métadonnées ArcGIS (ArcGISmetadatav1.dtd) est fourni avec ArcGIS Desktop dans le sous-dossier \Metadata\Translator\Rules du répertoire d'installation d'ArcGIS.
Extraction de plusieurs valeurs d’une colonne XML
Il est souvent utile d'extraire plusieurs valeurs d'un document XML unique.Voici la valeur Definition dans un tel scénario, un domaine de valeurs codées :
<? xml version = "1.0" encoding="utf-8"?>
<GPCodedValueDomain2
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xmlns:xs = "http://www.w3.org/2001/XMLSchema"
xmlns:typens = "http://www.esri.com/schemas/ArcGIS/10.0"
<DomainName>Material</DomainName>
<FieldType>esriFieldTypeString</FieldType>
<MergePolicy>esriMPTDefaultValue</MergePolicy>
<SplitPolicy>esriSPTDuplicate</SplitPolicy>
<Description>Valid pipe materials</Description>
<Owner>aelflad</Owner>
<CodedValues xsi:type= "typens:ArrayOfCodedValue">
<CodedValue xsi:type= "typens:CodedValue">
<Name>Cast iron</Name>
<Code xsi:type= "xs:string">CI</Code>
</CodedValue>
<CodedValue xsi:type= "typens:CodedValue">
<Name>Ductile iron</Name>
<Code xsi:type= "xs:string">DI</Code>
</CodedValue>
<CodedValue xsi:type= "typens:CodedValue">
<Name>PVC</Name>
<Code xsi:type= "xs:string">PVC</Code>
</CodedValue>
<CodedValue xsi:type= "typens:CodedValue">
<Name>Asbestos concrete</Name>
<Code xsi:type= "xs:string">AC</Code>
</CodedValue>
<CodedValue xsi:type= "typens:CodedValue">
<Name>Copper</Name>
<Code xsi:type= "xs:string">COP</Code>
</CodedValue>
</CodedValues>
</GPCodedValueDomain2>
Les valeurs qui sont habituellement les plus intéressantes pour les développeurs et les administrateurs sont les paires de valeurs et de codes, qui présentent une expression XPath de type /GPCodedValueDomain2/CodedValues/CodedValue. L'exemple suivant indique comment extraire plusieurs valeurs d'une définition XML unique pour obtenir les paires de valeurs et de codes pour tous les domaines d'une géodatabase dans SQL Server :
-- Get the code/value pairs for each coded value domain in the geodatabase.
SELECT
codedValue.value('Code[1]', 'nvarchar(max)') AS "Code",
codedValue.value('Name[1]', 'nvarchar(max)') AS "Value"
FROM
dbo.GDB_ITEMS AS items INNER JOIN dbo.GDB_ITEMTYPES AS itemtypes
ON items.Type = itemtypes.UUID
CROSS APPLY
items.Definition.nodes
('/GPCodedValueDomain2/CodedValues/CodedValue') AS CodedValues(codedValue)
WHERE
itemtypes.Name = 'Coded Value Domain' AND
items.Name = 'Material'
Code Value
CI Cast iron
DI Ductile iron
PVC PVC
AC Asbestos concrete
COP Copper
Pour plus d’informations sur les tables système et les vues utilisées dans Oracle, reportez-vous à la rubrique Tables système de la géodatabase.