Bearbeiten von Metadaten für viele ArcGIS-Elemente

Es ist unvermeidlich, dass im Laufe der Zeit Änderungen in vorhandenen Metadaten vorgenommen werden müssen, da sich einige Informationen ändern. Wenn die Informationen sich lediglich auf ein bestimmtes ArcGIS-Element beziehen, können Sie die Metadaten dieses Elements bearbeiten. Wenn die geänderten Informationen jedoch in den Metadaten vieler ArcGIS-Elemente enthalten sind, kostet es sehr viel Zeit, die Metadaten für alle betroffenen Elemente manuell zu bearbeiten.

Die beste Vorgehensweise in dieser Situation ist die Erstellung eines XSLT-Stylesheets, um die Änderungen automatisch vorzunehmen. Verwenden Sie ein Modell, das die Metadaten mit dem Werkzeug XSLT-Transformation ändert und die geänderten Informationen dann mit dem Werkzeug Metadatenimport zurück in die ArcGIS-Elemente importiert (siehe Abbildung unten).

Ein Geoverarbeitungsmodell zum Aktualisieren von Metadaten mit einem XSLT-Stylesheet

Erstellen eines XSLT-Stylesheets zum Aktualisieren von Metadaten

Im Internet finden Sie viele nützliche Ressourcen mit Informationen zum Erstellen von XSLT-Stylesheets. Die unten gezeigten Beispiele sind eine Starthilfe. In den Beispielen wird dargestellt, wie die Kontaktinformationen einer Organisation geändert werden.

Nehmen Sie an, die ursprünglichen Metadaten enthalten die folgenden Kontaktinformationen:

Auszug eines Metadaten-XML-Dokuments, in dem die Kontaktinformationen einer Organisation aktualisiert werden müssen:

<?xml version="1.0" encoding="UTF-8"?>
<metadata>
  <mdContact>
    <rpIndName>Reception</rpIndName>
    <rpOrgName>Esri Learning Center</rpOrgName>
    <rpCntInfo>
      <cntAddress>
        <delPoint>380 New York St.</delPoint>
        <city>Redlands</city>
        <adminArea>CA</adminArea>
        <postCode>92373</postCode>
        <country>US</country>
        <eMailAdd>info@esri.com</eMailAdd>
      </cntAddress>
      <cntPhone>
        <voiceNum>909-793-2853</voiceNum>
        <faxNum>909-793-4801</faxNum>
      </cntPhone>
    </rpCntInfo>
    <role>
      <RoleCd value="010"/>
    </role>
  </mdContact>
  ...
</metadata>

Einige dieser Kontaktinformationen müssen wie folgt bearbeitet werden:

Der Rest der Kontaktinformationen bleibt gleich.

Diese Änderungen werden mit dem folgenden XSLT-Stylesheet vorgenommen. Das Metadatenelement mit dem einzelnen Namen wird entfernt. Alle einzelnen Metadatenelemente der Adresse werden gleichzeitig aktualisiert. Die Telefonnummer wird getrennt vom Rest der Telefoninformationen aktualisiert. Bevor die Webseite und die Geschäftszeiten hinzugefügt werden, müssen alle anderen vorhandenen Kontaktinformationen kopiert werden, damit diese beim Hinzufügen der neuen Informationen erhalten bleiben.

Ein XSLT-Stylesheet, das die Kontaktinformationen für eine Organisation ändert und den restlichen Metadateninhalt kopiert:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" omit-xml-declaration="no" />

  <!-- process the metadata using the templates below -->
  <xsl:template match="/">
    <xsl:apply-templates select="node() | @*" />
  </xsl:template>

  <!-- copy all metadata conent -->
  <xsl:template match="node() | @*" priority="0">
    <xsl:copy>
      <xsl:apply-templates select="node() | @*" />
    </xsl:copy>
  </xsl:template>

  <!-- all metadata XSLT stylesheets used to update metadata should be identical to this example up to this point -->
  <!-- add the templates you'll use to update the metadata below -->

  <!-- remove the individual name from the contact information for the organization name Esri Learning Center -->
  <xsl:template match="rpIndName[../rpOrgName = 'Esri Learning Center']" priority="1" >
  </xsl:template>
  
  <!-- edit the address for any contact with the organization name Esri Learning Center -->
  <xsl:variable name="newAddress" >
    <cntAddress>
      <delPoint>380 New York St.</delPoint>
      <city>Redlands</city>
      <adminArea>CA</adminArea>
      <postCode>92373-8100</postCode>
      <country>US</country>
      <eMailAdd>LearnGIS@esri.com</eMailAdd>
    </cntAddress>
  </xsl:variable> 
  <xsl:template match="cntAddress[../../rpOrgName = 'Esri Learning Center']" priority="1" >
    <xsl:copy-of select="$newAddress" />
  </xsl:template>

  <!-- edit all contacts with the organization name Esri Learning Center to have a new phone number -->
  <xsl:variable name="newPhone">888-377-4575 x.1-3204</xsl:variable> 
  <xsl:template match="voiceNum[../../../rpOrgName = 'Esri Learning Center']" priority="1" >
    <voiceNum><xsl:value-of select="$newPhone" /></voiceNum>
  </xsl:template>
  
  <!-- add hours of availability for the organization name Esri Learning Center -->
  <xsl:template match="rpCntInfo[../rpOrgName = 'Esri Learning Center']" priority="1" >
    <xsl:copy>
      <xsl:apply-templates select="node() | @*" />
      <cntOnlineRes>
        <linkage>http://www.esri.com/training</linkage>
      </cntOnlineRes>
      <cntHours>8:00am to 5:00pm Pacific Time</cntHours>
    </xsl:copy>
  </xsl:template>
  
</xsl:stylesheet>

Durch die Bearbeitung der Beispielmetadaten mit diesem XSLT-Stylesheet und dem Werkzeug "XSLT-Transformation" wird die folgende XML-Datei ausgegeben. Anschließend werden die Änderungen mit dem Werkzeug "Metadatenimport" im ursprünglichen ArcGIS-Element gespeichert.

Ein Auszug der mit dem oben dargestellten XSLT-Stylesheet aktualisierten Metadaten:

<?xml version="1.0" encoding="UTF-8"?>
<metadata>
  <mdContact>
    <rpOrgName>Esri Learning Center</rpOrgName>
    <rpCntInfo>
      <cntAddress>
        <delPoint>380 New York St.</delPoint>
        <city>Redlands</city>
        <adminArea>CA</adminArea>
        <postCode>92373-8100</postCode>
        <country>US</country>
        <eMailAdd>LearnGIS@esri.com</eMailAdd>
      </cntAddress>
      <cntPhone>
        <voiceNum>888-377-4575 x.1-3204</voiceNum>
        <faxNum>909-793-4801</faxNum>
      </cntPhone>
      <cntOnlineRes>
        <linkage>http://www.esri.com/training</linkage>
      </cntOnlineRes>
      <cntHours>8:00am to 5:00pm Pacific Time</cntHours>
    </rpCntInfo>
    <role>
      <RoleCd value="010"/>
    </role>
  </mdContact>
  ...
</metadata>

Mehrere XSLT-Stylesheets werden mit ArcGIS for Desktop bereitgestellt, um die Metadaten-Geoverarbeitungsmodelle in der Toolbox "Conversion" im Ordner <ArcGIS-Installationsverzeichnis>\Metadata\Stylesheets\gpTools zu unterstützen. Verwenden Sie diese als Beispiele.

Diese helfen Ihnen bei der Erstellung Ihrer eigenen Stylesheets. Eine XML-DTD, die das ArcGIS-Metadaten-XML-Format beschreibt, wird im Ordner <ArcGIS-Installationsverzeichnis>\Metadata\Translator\Rules bereitgestellt.

Verwandte Themen

9/11/2013