ArcGIS for Desktop

  • 文档
  • 合约
  • 支持

  • My Profile
  • 帮助
  • Sign Out
ArcGIS for Desktop

ArcGIS Online

专为贵组织打造的制图平台

ArcGIS for Desktop

全面的专业性 GIS

ArcGIS for Server

面向企业的 GIS

ArcGIS for Developers

用于构建位置感知应用程序的工具

ArcGIS Solutions

适用于行业的免费模板地图和应用程序

ArcGIS Marketplace

获取适用于组织的应用程序和数据

  • 文档
  • 合约
  • 支持
Esri
  • 登录
user
  • 我的个人资料
  • 登出

帮助

  • 主页
  • 入门
  • 制图
  • 分析
  • 管理数据
  • 工具
  • 更多...

编辑多个 ArcGIS 项的元数据

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

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

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

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

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

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

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

  • 个人姓名为 Reception
  • 组织名称为 Esri Learning Center
  • 街道地址为 380 New York St.
  • 城市为 Redlands
  • 州为加利福尼亚,CA
  • 邮政编码为 92373
  • 国家为美国 US
  • 电子邮件地址为 info@esri.com
  • 电话号码为 909-793-2853
  • 传真号码为 909-793-4801
  • 为此联系人指定的角色为发布者,010

必须更新组织联系信息的元数据 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>

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

  • 移除联系信息中的个人姓名。
  • 将邮政编码更改为 92373-8100。
  • 将电子邮件地址更改为 LearnGIS@esri.com。
  • 将电话号码更改为 888-377-4575 x.1-3204。
  • 添加用于在 Internet 上查找信息的网页的地址 http://www.esri.com/training。
  • 添加可以联系组织的时间信息 8:00am to 5:00pm Pacific Time。

其余联系信息保持不变。

下面的 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 文件夹中。

相关主题

  • 创建和编辑元数据快速浏览
  • 编辑元数据
  • XSLT 变换
有关此主题的反馈?

ArcGIS for Desktop

  • 主页
  • 文档
  • 合约
  • 支持

ArcGIS 平台

  • ArcGIS Online
  • ArcGIS for Desktop
  • ArcGIS for Server
  • ArcGIS for Developers
  • ArcGIS Solutions
  • ArcGIS Marketplace

关于 Esri

  • 关于我们
  • 招贤纳士
  • 内部人员博客
  • 用户大会
  • 开发者峰会
Esri
© Copyright 2016 Environmental Systems Research Institute, Inc. | 隐私政策 | 法律声明