摘要
此工具使用 .NET 3.5 XML 软件对 ArcGIS 项目的元数据或使用 XSLT 1.0 样式表的任何 XML 文件进行转换,并将结果保存至某个 XML 文件。
XSLT 样式表可用于对 ArcGIS 元数据或 XML 文件执行多种修改。ArcGIS Desktop 提供了几种 XSLT 样式表。可以使用它们将项目元数据的副本保存到 XML 文件,将元数据显示的副本保存到 HTML 文件以及更改项目元数据内容。这些 XSLT 样式表可在 <ArcGIS Installation Location>\Metadata\Stylesheets 文件夹中找到。
了解有关随 ArcGIS Desktop 提供的 XSLT 样式表的更多信息
可基于所提供的样式表来创建您自己的 XSLT 样式表以执行任务。例如,您可能会为执行以下操作而编写一个样式表:
- 更新地址或电话号码。创建用于运行此过程的模型,然后使用元数据导入程序工具将更新的元数据保存到原始 ArcGIS 项目。
- 在导出或发布元数据之前,删除不希望公开的信息。在运行导出元数据或元数据发布程序工具之前,创建用于运行此过程的模型。
- 将信息导出到可纳入网站的 XML 或 HTML 文件中。定期创建用于运行此过程的脚本。
XSLT 样式表用于修改 ArcGIS 元数据,但不应删除 Esri 及进制元数据元素中的信息,在 ArcGIS 外部使用输出 XML 时除外。
用法
由 XSLT 样式表生成的输出文件可被格式化为多种格式,例如 XML、HTML 或文本格式。对于本工具所提供的默认输出文件名,其扩展名为 .xml。若使用的 XSLT 样式表无法生成 XML 文件,则应为文件名指定一个适合的文件扩展名。
对于使用旧版本 XSL 样式表(ArcGIS Desktop 9.3.1 及更早版本中所提供 XSL 样式表)的 ArcGIS 项的元数据或独立元数据 XML 文件,本工具无法处理,因为这些元数据或 XML 文件不支持 XSLT 1.0 技术。其使用的技术较老,.NET 3.5 Framework 不支持该技术。这些 XSL 样式表也不能在 ArcGIS 元数据编辑器中使用。
XSLT 参数可将字符串或 XML 文件名传递给 XSLT 样式表,然后使用所传递的参数来修改项的元数据。例如,XSLT 样式表可将电话号码以字符串的形式进行传递,并更新元数据中的所有电话号码。若使用此参数传递 XML 文件,则 XSLT 样式表可将文件中包含的信息与源元数据合并。
有关如何传递值的示例,请参考 ArcGIS 随附的 add unique identifier.xslt 文件;有关如何将单独 XML 文件中的信息与 ArcGIS 项的元数据进行合并的示例,请参考 merge upgraded FGDC with existing.xslt。
若需创建一个自定义 XSLT 样式表来显示(或导出)ArcGIS 中的元数据(或 XML 文件),则请参阅 .NET 3.5 Framework 的 Microsoft 文档,其中包含有关 XSLT 和 XPath 元素、函数及其所支持语法的完整列表。除某些标准 XSLT 函数外,还可以提供一些 .NET 特定函数。
若想在 ArcGIS 内外部都能使用自定义样式表,则应尽量使用 XSLT 1.0 与 XPath 1.0 元素、函数及语法,这样会大大提高操作成功的概率。非 Microsoft 应用程序可能不支持任何 .NET 特定 XSLT 和 XPath 函数。
XSLT 样式表是唯一能同本地理处理工具及 ArcGIS 元数据编辑器一起使用的样式表,该样式表可通过某些 ArcGIS 提供的自定义 XSLT 函数来提高元数据的处理能力和显示效果。要使用这些函数,XSLT 样式表必须参考 ArcGIS XSLT 函数命名空间 http://www.esri.com/metadata/ 的 URI,例如 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:esri="http://www.esri.com/metadata/">。
必须在 ArcGIS XSLT 函数的开头为 ArcGIS XSLT 函数命名空间指定前缀。如果为 ArcGIS XSLT 函数命名空间指定前缀 esri(如上例所示),则可按以下方法使用 GuidGen() 函数:<xsl:value-of select="esri:GuidGen()" />。
- GuidGen() - 返回一个新的全局唯一标识符 (GUID) 值,不包括大括号({ and })。例如,元数据中可包含 GUID,以唯一标识元数据文档或该文档所描述的资源。有关示例,请参考 ArcGIS 提供的 add unique identifier.xslt 文件。
- decodenodeset() - 如果 XML 元素中包含转义的 XHTML 或 XML,则此函数将返回节点集,可将该节点集与 msxsl:node-set 函数结合使用,来处理先前转义的各个元素。有关示例,请参考 ArcGIS 提供的 ESRIISO2.xslt 和 ItemDescription.xslt 文件。例如,项目的空间参考属性以转义的 XML 数据的形式自动存储在项目的元数据中。对于准备在发布 ArcGIS Online 时在元数据编辑器中标记的摘要和使用限制内容,将以转义的 XHTML 的形式存储。
- splitcoords() - 采用逗号分隔的 x,y 坐标对,并将它们转换为空格分隔的列表。有关示例,请参考 ArcGIS 提供的 upgrade ESRI-ISO to ArcGIS94.xslt 文件。
- strtoupper() - 将输入文本字符串更改为所有字母均为大写形式。有关示例,请参考 ArcGIS 提供的 add unique identifier.xslt 文件。
- striphtml() - 如果 XML 元素包含转义的 XHTML 或 XML,则此函数将返回其中所含的文本,但会删除所有标记。也就是说,会将两个小于 (<) 或大于 (>) 字符之间的任何内容假设为标记并将其删除。有关示例,请参考 ArcGIS 提供的 ESRIISO2.xslt、ItemDescription.xslt 和 prep metadata for export.xslt 文件。例如,在准备将摘要和使用限制元素的内容导出为标准元数据格式时,将会从元数据内容中删除存在的任意 XHTML 标记。
- strtolower() - 将输入文本字符串更改为所有字母均为小写形式。有关示例,请参考 ArcGIS 提供的 auxCountries.xslt、auxLanguages.xslt 和 auxUCUM.xslt 文件。
源元数据参数具有复杂的数据类型。如果在模型中使用此工具,则请在 ModelBuilder 中为源元数据参数创建变量,方法为右键单击此工具,指向获取变量,指向从参数,然后单击源元数据。
如果某 ArcGIS 项包含的元数据是在 ArcGIS Desktop 9.3.1 或更早版本中使用 FGDC 元数据编辑器创建的,并且项的元数据已升级为 ArcGIS 元数据,则 ArcGIS 元数据将保留原始的 FGDC 元数据 XML 元素。此元数据还将包含其他 ArcGIS 元数据元素。
可结合 ArcGIS 提供的 _MPXML2.xsl 文件,利用此工具导出原始 FGDC 元数据元素。在上例中,此文件将仅导出项目的原始 FGDC 格式元数据内容,即在描述选项卡的 FGDC 元数据(只读)标题下方显示的信息。在输出 XML 文件中,FGDC 元素将按正确方式排序。
导出的文件可用 FGDC XML 模式、DTD 或 USGS 元数据工具(通常称为 mp)进行验证。USGS MP 元数据转换程序会在处理项目的 FGDC 格式元数据内容之前内部执行此操作。
对于以 HTML 格式发布至外部网站上的元数据,Internet 搜索引擎(如 Google)将为其建立索引,前提是该网站能正确显示其内容。
语法
XSLTransform_conversion (source, xslt, output, {xsltparam})
参数 | 说明 | 数据类型 |
source | 要进行元数据转换的项,或者要进行转换的独立 XML 文件。 | Data Element; Layer |
xslt | 符合 W3C 规范的 XSLT 1.0 样式表文件用于定义将要执行的转换。 ArcGIS 提供了几种样式表,可以在 <ArcGIS Installation Location>\Metadata\Stylesheets 文件夹中找到这些样式表。 | File |
output | 要创建的文件,用于包含转换后的元数据。 所创建文件的类型取决于 XSLT 样式表所指定的输出方式。 | File |
xsltparam (可选) | 将被传递给 XSLT 样式表的 XML 文件或字符串。 如要获得 XSLT 样式表中的此参数,需在 XSLT 样式表顶端,xsl:output 元素之后,第一个 xsl:template 元素之前添加 <xsl:param name="gpparam" />。有关示例,请参阅 add unique identifier.xslt 文件。 | File; String |
代码示例
将元数据导出为 HTML 文件
使用 ArcGIS 提供的 ArcGIS.xsl XSLT 样式表将元数据导出为可在网站上使用的 HTML 文件。
import arcpy
from arcpy import env
env.workspace = "C:/data"
#set local variables
dir = arcpy.GetInstallInfo("desktop")["InstallDir"]
xslt = dir + "Metadata/Stylesheets/ArcGIS.xsl"
arcpy.XSLTransform_conversion("vegetation", xslt, "vegetation.html", "#")
环境
许可信息
- ArcGIS Desktop Basic: 是
- ArcGIS Desktop Standard: 是
- ArcGIS Desktop Advanced: 是