XML-Spalten in einer in PostgreSQL gespeicherten Geodatabase
XML ist ein offener Standard zum Definieren von Datenelementen innerhalb von Dokumenten. Um XML-Daten in einer PostgreSQL-Datenbank zu speichern, können Sie ArcSDE-XML-Spalten oder native PostgreSQL-XML-Spalten verwenden.
Sie können benutzerdefinierte XML-Dokumente in beiden XML-Typen speichern. Der Parameter XML_COLUMN_STORAGE in "sde_dbtune" steuert den verwendeten XML-Typ. Standardmäßig ist dieser Parameter auf den nativen PostgreSQL-XML-Datentyp festgelegt.
ArcSDE-XML-Datentypen werden zum Speichern von Sammlungen von Metadatendokumenten verwendet, um ArcIMS-Metadaten-Services zu unterstützen. Wenn Sie daher ArcIMS-Metadaten-Services verwenden, müssen Sie den Parameter XML_COLUMN_STORAGE auf SDE_XML festlegen.
XML-Spalten in ArcGIS Desktop
XML-Spalten werden in der Geodatabase nicht vollständig unterstützt. Daher gilt Folgendes:
- Sie können den Inhalt einer XML-Spalte nicht in einer Tabelle in ArcCatalog in der Vorschau anzeigen. Die Spalte ist leer oder enthält unverständliche Zeichen.
- Auf der Registerkarte "Felder" im Dialogfeld "Eigenschaften" der Tabelle sind keine Datentypen für eine XML-Spalte aufgeführt.
- Eine Tabelle, die eine XML-Spalte enthält, kann nicht von einer Geodatabase in eine andere kopiert werden.
- Wenn Sie die Tabelle mithilfe von Geoverarbeitungswerkzeugen importieren oder exportieren, müssen Sie die XML-Spalte ausschließen.
- Sie können eine Tabelle mit einer XML-Spalte mithilfe von ArcCatalog nicht als versioniert registrieren.
- Wenn Sie eine Tabelle mit einer XML-Spalte in ArcMap öffnen, wird die XML-Spalte leer angezeigt.
- Zur Bearbeitung einer Tabelle mit einer XML-Spalte in ArcMap können Sie eine nicht versionierte Editiersitzung verwenden. Die XML-Spalte selbst kann jedoch nicht bearbeitet werden, nur die anderen Felder in der Tabelle.
Spalten, die XML-Dokumente in einem PostgreSQL-DBMS enthalten
Es gibt zwei verschiedene Typen von XML-Spalten, die Sie verwenden können: ArcSDE-XML oder natives PostgreSQL-XML. Welchen Typ Sie in einem Dataset verwenden, das Sie in der Geodatabase erstellen, wird durch den Parameter XML_STORAGE in der Tabelle "sde_dbtune" gesteuert.
Wenn Sie den nativen PostgreSQL-XML-Typ verwenden, wird dieser nicht in zusätzlichen Geodatabase-Systemtabellen, sondern nur in den Systemtabellen von PostgreSQL verfolgt.
Für ArcSDE-XML werden drei ArcSDE-Geodatabase-Systemtabellen verwendet, um XML-Spalten zu verwalten: sde_xml_columns , sde_xml_index_tags und sde_xml_indexes. Diese Tabellen gehören dem ArcSDE-Administratorbenutzer. ArcSDE erstellt außerdem zwei weitere Tabellen für jede XML-Spalte, die verwendet werden, um XML-Dokumente zu speichern und zu indizieren: die Tabellen "sde_xml_doc<column_id>" und "sde_xml_idx_<column_id>". Diese Tabellen gehören dem Benutzer, der die Business-Tabelle besitzt, die das XML-Dokument enthält.
ArcSDE erstellt die folgenden Tabellen, die zum Speichern und Indizieren von XML-Dokumenten verwendet werden.
Nehmen Sie per SQL keine Änderungen an diesen Tabellen vor.
Wenn Sie einer Business-Tabelle eine Spalte zum Speichern von XML-Dokumenten hinzufügen, wird der XML-Spaltentabelle eine Zeile hinzugefügt. Diese Tabelle ist in jeder ArcSDE-Datenbank einmal vorhanden.
Feldname |
Feldtyp |
Beschreibung |
Null? |
---|---|---|---|
column_id |
Ganzzahl |
Die Kennung der XML-Spalte und der Primärschlüssel der Tabelle Dieser Wert wird von ArcSDE zugewiesen, wenn die XML-Spalte erstellt wird. |
NOT NULL |
registration_id |
Ganzzahl |
Die Kennung der Business-Tabelle, die die XML-Spalte enthält, und der Fremdschlüssel für die Systemtabelle "table_registry" |
NOT NULL |
column_name |
varchar(32) |
Der Name der XML-Spalte in der Business-Tabelle |
NOT NULL |
index_id |
Ganzzahl |
Die Kennung des mit der XML-Spalte (falls vorhanden) verknüpften XPath-Indexes und der Fremdschlüssel für die Tabelle "sde_xml_indexes" |
|
minimum_id |
Ganzzahl |
Der Wert der ursprünglichen Zahl, die in der XML-Spalte der Business-Tabelle verwendet wurde, um einzelne XML-Dokumente zu identifizieren |
|
config_keyword |
varchar(32) |
Das DBTUNE-Konfigurationsschlüsselwort, dessen Parameter bestimmen, wie das XML-Dokument, die XML-XPath-Indextabellen und die für diese Tabellen erstellten Textindizes in der Datenbank definiert sind |
|
xflags |
Ganzzahl |
Ein Wert, der angibt, ob die Originaldokumente in der XML-Dokument-Tabelle komprimiert oder dekomprimiert gespeichert werden Standardmäßig werden Dokumente komprimiert; komprimierte Dokumente bieten bessere Performance. |
NOT NULL |
Diese Tabelle ist in jeder ArcSDE-Datenbank einmal vorhanden. Sie enthält eine Zeile für jede Spalte, die einen XPath-Index hat.
Feldname |
Feldtyp |
Beschreibung |
Null? |
---|---|---|---|
index_id |
Ganzzahl |
Die Kennung des XPath-Indexes und der Primärschlüssel der Tabelle |
NOT NULL |
index_name |
varchar(32) |
Der Name des XPath-Indexes Für mit einem ArcIMS-Metadaten-Service verknüpfte XPath-Indizes ist der Name "ims_xml#", wobei # die Kennung der XML-Spalte in der Tabelle "sde_xml_columns" ist. |
NOT NULL |
owner |
varchar(32) |
Der Datenbankbenutzer, der die XML-Spalte besitzt; Bei ArcIMS-Metadaten-Services ist dies der Benutzer, der in der ArcXML-Konfigurationsdatei des Services angegeben ist. |
NOT NULL |
index_type |
Ganzzahl |
Ein Wert, der den Typ des XPath-Indexes angibt Für den Indextyp SE_XML_INDEX_DEFINITION lautet der Wert 2, und für den Indextyp SE_XML_INDEX_TEMPLATE lautet der Wert 1. Für mit einem ArcIMS-Metadaten-Service verknüpfte XPath-Indizes wird als standardmäßiger Indextyp SE_XML_INDEX_DEFINITION verwendet. |
NOT NULL |
Beschreibung |
varchar(64) |
Text, der den XPath-Index identifiziert Wenn eine Indexdefinitionsdatei verwendet wurde, um den Index zu erstellen, kann die Indexbeschreibung am Anfang der Datei angegeben werden. |
Eine Spalte, die ein XML-Dokument enthält, kann optional einen XPath-Index haben, mit dem Sie den Inhalt eines bestimmten XML-Elements oder -Attributs in jedem Dokument durchsuchen können. Die Definition, welche Elemente und Attribute in jedem XPath-Index enthalten oder ausgeschlossen sind, wird in dieser Tabelle aufgezeichnet.
Diese Tabelle ist in jeder ArcSDE-Datenbank einmal vorhanden. Sie enthält eine Zeile für jeden XPath, der mit einem XPath-Index einer Spalte verknüpft ist.
Feldname |
Feldtyp |
Beschreibung |
Null? |
---|---|---|---|
index_id |
Ganzzahl |
Die Kennung des mit der XML-Spalte (falls vorhanden) verknüpften XPath-Indexes und der Fremdschlüssel für die Tabelle "sde_xml_indexes" |
NOT NULL |
tag_id |
Ganzzahl |
Die Kennung eines XPaths oder eines Tags |
NOT NULL |
tag_name |
varchar(1024) |
Ein absoluter XPath, der ein XML-Element oder ein Attribut identifiziert, das möglicherweise in einem XML-Dokument vorkommt Beispiel: "/metadata/mdDateSt" identifiziert ein XML-Element, und "/metadata/dataIdInfo/tpCat/TopicCatCd/@value" identifiziert ein XML-Attribut. Diese XPaths dürfen keine Sternchen (*) enthalten, um auf eine Gruppe von XML-Elementen oder Attributen zu verweisen – jedes Element oder Attribut wird mit den in dieser Tabelle angegebenen XPaths genau abgeglichen. Elemente können in einem gültigen XML-Dokument nicht * genannt werden. |
NOT NULL |
data_type |
Ganzzahl |
Ein Wert, der angibt, ob das XML-Element bzw. –Attribut als Zahl, VARCHAR oder Text indiziert wird; Ein Wert von 1 gibt an, dass der Inhalt des Tags als Text indiziert wird; eine 2 gibt an, dass der Inhalt des Tags als Zahl indiziert wird; eine 3 gibt an, dass der Inhalt des Tags als VARCHAR indiziert wird. |
NOT NULL |
tag_alias |
Ganzzahl |
Eine Zahl, die verwendet werden kann, um einen XPath zu identifizieren Beispiel: Das Z39.50-Kommunikationsprotokoll verweist mithilfe von numerischen Codes auf Inhalte, die durchsucht werden können. Diese Spalte wird nicht vom ArcIMS Z39.50-Konnektor verwendet. |
|
Beschreibung |
varchar(64) |
Text, der den Inhalt identifiziert, der im XML-Element oder -Attribut enthalten sein sollte |
|
is_excluded |
Ganzzahl |
Ein Wert, der angibt, ob das XML-Element im XPath-Index enthalten oder ausgeschlossen ist; 0 = XPath ist enthalten, 1 = XPath ist ausgeschlossen |
NOT NULL |
In der Tabelle "sde_xml_doc<column_id>" wird das XML-Dokument gespeichert und ein Volltextindex des Dokumentinhalts verwaltet. Die ArcSDE-Datenbank enthält eine dieser Tabellen für jede Spalte, die ein XML-Dokument beinhaltet. Die Zahl im Tabellennamen ist die Kennung der Spalte. Diese Tabelle enthält eine Zeile für jedes in der Spalte gespeicherte XML-Dokument.
Feldname |
Feldtyp |
Beschreibung |
Null? |
---|---|---|---|
sde_xml_id |
Ganzzahl |
Die Kennung für ein in der XML-Spalte gespeichertes XML-Dokument und der Primärschlüssel für die Tabelle |
NOT NULL |
doc_property |
Ganzzahl |
Ein Wert, der angibt, ob beim Hinzufügen des Inhalts eines XML-Dokuments zum XPath-Index Konflikte erkannt wurden; 1 = ein Konflikt wurde gefunden; z. B., wenn ein Element in numerischer Form indiziert werden soll, das Dokument stattdessen aber eine Zeichenfolge in diesem Element enthält. |
|
xml_doc |
bytea |
Das XML-Dokument |
NOT NULL |
xml_doc_val |
bytea |
Der Inhalt des gesamten XML-Dokuments ohne XML-Tags und andere Markups Für diese Spalte wird standardmäßig ein Textindex erstellt; dieser Index wird verwendet, um auf Volltextabfragen zu reagieren. Für ArcIMS Metadaten-Services wird dieser Index verwendet, um auf FULLTEXT-Anforderungen zu reagieren. |
Die Tabelle "sde_xml_idx<column_id>" wird für Spalten erstellt, die einen XPath-Textindex haben. In dieser Tabelle wird der Inhalt (Text oder Zahlen) für jeden indizierten XPath gespeichert.
Die ID-Nummer im Tabellennamen ist die interne Registrierungsnummer für die Spalte, die das XML-Dokument enthält.
Feldname |
Feldtyp |
Beschreibung |
Null? |
---|---|---|---|
xml_key_column |
Ganzzahl |
Die Kennung für den indizierten Wert und der Primärschlüssel für die Tabelle |
NOT NULL |
sde_xml_id |
Ganzzahl |
Die Kennung für das XML-Dokument, das den indizierten Wert enthält |
NOT NULL |
tag_id |
Ganzzahl |
Die Kennung für das Tag, das mit dem XPath-Index der XML-Spalte verknüpft ist und das identifiziert, wo der Wert im Dokument gespeichert wird |
NOT NULL |
double_tag |
Doppelte Genauigkeit |
Der indizierte Wert, wenn der Tag in der XPath-Indexdefinition mit doppelter Genauigkeit definiert ist |
|
string_tag |
varchar(256) |
Der indizierte Wert, wenn der Tag in der XPath-Indexdefinition als VARCHAR definiert ist |
|
text_tag |
Text |
Der indizierte Wert, wenn der Tag in der XPath-Indexdefinition als STRING definiert ist |
Nachfolgend sehen Sie ein Diagramm einer Tabelle mit einer Spalte, die ein XML-Dokument enthält, und die Systemtabellen, die zur Verfolgung verwendet wurden. Gestrichelte Linien geben implizite Beziehungen an; eine durchgezogene Linie bezeichnet explizit definierte Beziehungen zwischen Tabellen.
Spalten, die ein XML-Dokument in einem XML Workspace-Dokument enthalten
Sie können eine Tabelle, die eine Spalte mit einem XML-Dokument enthält, nicht in ein XML Workspace-Dokument exportieren. Sie können sie jedoch in ein XML-Datensatzdokument exportieren.