编辑多个 ArcGIS 项的元数据

创建元数据之后,其中包含的信息将会适时进行变更。如果信息特定于某一个 ArcGIS 项,您可以编辑其元数据,以对该信息进行更改。但如果所更改的信息包括在多个 ArcGIS 项的元数据中,手动编辑所有受影响项的元数据的过程将会十分繁琐。

处理这种情况的最佳方法是创建可为您执行编辑的 XSLT 样式表。使用通过 XSLT 变换工具编辑元数据的模型,然后按下图所示,使用元数据导入程序工具将已编辑信息导入回 ArcGIS 项。

可通过 XSLT 样式表更新元数据的地理处理模型。

创建 XSLT 样式表以更新元数据

Internet 上有许多可帮助您学习如何创建 XSLT 样式表的资源。然而,下面的示例对入门还是很有帮助的。这些示例介绍了如何更改组织的联系信息。

假设原始元数据包括元数据联系信息(如下所示),其中:

必须更新组织联系信息的元数据 XML 文档的摘录。

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

此联系信息的某些部分必须按以下方式编辑:

其余联系信息保持不变。

下面的 XSLT 样式表将执行这些编辑。个人姓名元数据元素将被移除。一次更新整个地址及其所有单独元数据元素。与其余电话信息分开对电话号码进行更新。要添加网页和可用时间,必须复制其他所有现有联系信息,这样,这些信息便不会在新信息添加之前丢失。

以下是编辑某组织的联系信息并复制所有其他元数据内容的 XSLT 样式表。

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

使用“XSLT 变换”工具将此 XSLT 用于编辑如上所示的示例元数据时,下面的输出 XML 文件将被创建为输出。使用“元数据导入程序”程序保存原始 ArcGIS 项的这些更改。

下面是由以上 XSLT 样式表生成的已更新元数据的摘录。

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

ArcGIS for Desktop 提供多张 XSLT 样式表来支持“转换”工具箱中的元数据地理处理模型,这些样式表位于 <ArcGIS 安装位置>\Metadata\Stylesheets\gpTools 文件夹中。这些文件可用作示例。

创建您自己的样式表时,最好能够了解您正在使用的 XML 格式。描述 ArcGIS 元数据 XML 格式的 XML DTD 位于 <ArcGIS 安装位置>\Metadata\Translator\Rules 文件夹中。

相关主题

9/15/2013