Editar metadatos para muchos elementos de ArcGIS

Una vez creados los metadatos, inevitablemente, parte de la información que contienen cambiará con el tiempo. Si la información es específica de un elemento de ArcGIS, puede editar sus metadatos para cambiar la información. Sin embargo, si la información que cambió está incluida en los metadatos para muchos elementos de ArcGIS, el proceso de editar manualmente los metadatos para todos los elementos afectados es muy tedioso.

El mejor enfoque para controlar esta situación es crear una hoja de estilos XSLT que pueda realizar las ediciones por usted. Utilice un modelo que edite los metadatos con la herramienta Transformación XSLT y, a continuación, importe de nuevo la información revisada en el elemento de ArcGIS utilizando la herramienta Importador de metadatos, tal y como se muestra a continuación.

Un modelo de geoprocesamiento para actualizar metadatos con una hoja de estilos XSLT.

Crear una hoja de estilos XSLT para actualizar metadatos

Hay muchos recursos disponibles en Internet que pueden ayudarle a obtener información sobre cómo crear hojas de estilos XSLT. No obstante, los ejemplos siguientes le ayudarán a empezar. Muestran cómo cambiar la información de contacto de una organización.

Suponga que los metadatos originales incluyeran un contacto de metadatos como se muestra a continuación, donde

Un extracto de un documento XML de metadatos donde se debe actualizar la información de contacto de una organización.

<?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>

Parte de esta información de contacto se debe editar de la manera siguiente:

El resto de la información de contacto se quedará igual.

La siguiente hoja de estilos XSLT realizará estas ediciones. El elemento de metadatos del nombre individual se eliminará. La dirección completa, con todos sus elementos de metadatos individuales, se actualiza de una vez. El número de teléfono se actualiza por separado del resto de la información telefónica. Para agregar la página Web y las horas de disponibilidad, se debe copiar toda la información de contacto existente para que no se pierda antes de agregar la nueva información.

Una hoja de estilos XSLT que edita información de contacto para una organización y copia el resto del contenido de metadatos.

<?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>

Cuando se utiliza este XSLT para editar los metadatos de ejemplo antes mostrados utilizando la herramienta Transformación XSLT, se creará el archivo XML de salida siguiente. Utilice la herramienta Importador de metadatos para guardar estos cambios con el elemento de ArcGIS original.

Un extracto de los metadatos actualizados producidos por la hoja de estilos XSLT anterior.

<?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>

Con ArcGIS for Desktop se proporcionan varias hojas de estilos XSLT para admitir los modelos de geoprocesamiento de metadatos en la caja de herramientas Conversión, en la carpeta <Ubicación de instalación de ArcGIS>\Metadata\Stylesheets\gpTools. Utilícelas como ejemplos.

Al crear hojas de estilos propias, es útil entender el formato XML con el que se está trabajando. En la carpeta <Ubicación de instalación de ArcGIS>\Metadata\Translator\Rules se proporciona un DTD XML que describe el formato XML de metadatos de ArcGIS.

Temas relacionados

9/11/2013