XSLT 变换 (Conversion)
摘要
此工具使用 .NET 3.5 XML 软件对 ArcGIS 项的元数据或任何使用 XSLT 1.0 样式表的 XML 文件进行转换,并会将结果保存到某个 XML 文件中。
XSLT 样式表可用于对 ArcGIS 元数据或 XML 文件执行多种修改。ArcGIS 提供了几种 XSLT 样式表。某些样式表可将元数据转换为可供显示的 HTML 页面。其他的样式表由元数据模型地理处理工具加以使用,以执行导入、导出以及升级元数据过程的部分操作,或用于执行众所周知的元数据任务。可在 <ArcGIS 安装位置>\Metadata\Stylesheets 文件夹中找到这些样式表。
可基于所提供的样式表来创建您自己的 XSLT 样式表以执行任务。例如,您可能会为执行以下操作而编写一个样式表:
- 更新地址或电话号码。创建运行此过程的模型,然后使用元数据导入程序工具将更新的元数据保存到原始 ArcGIS 项中。
- 在导入或发布元数据前删除不希望公开的信息。在运行导出元数据或元数据发布程序工具前创建可运行此过程的模型。
- 创建用于显示 ArcGIS 项信息的 HTML 页面,作为网站的一部分。使用可在 ArcGIS 中显示元数据的 ArcGIS.xsl 样式表或编写您自己的样式表。
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 元素、函数及其所支持语法的完整列表。只有这些函数可同本工具及 ArcGIS 元数据编辑器一起使用。
若想在 ArcGIS 内外部都能使用自定义样式表,则应尽量使用 XSLT 1.0 与 XPath 1.0 元素、函数及语法,这样会大大提高操作成功的概率。非 Microsoft 应用程序可能不支持任何 Microsoft 特定函数 XSLT 与 XPath 函数。
XSLT 样式表是唯一能同本地理处理工具及 ArcGIS 元数据编辑器一起使用的样式表,该样式表可通过某些 ArcGIS 提供的自定义 XSLT 函数来提高元数据的处理能力和显示效果。如需使用这些函数,XSLT 样式表必须参照 ESRI XSLT 函数命名空间的 URI http://www.esri.com/metadata/。例如,<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:esri="http://www.esri.com/metadata/">>。
必须在 ArcGIS XSLT 函数的开头为 ESRI XSLT 函数命名空间指定前缀。如果为 ESRI XSLT 函数命名空间指定前缀 esri(如上例所示),则可按以下方法使用 GuidGen() 函数:<xsl:value-of select="esri:GuidGen()" />。
- GuidGen() - 返回一个新全局唯一标识符 (GUID) 值,不包含大括号 ({ 与 })。例如,元数据中可包含 GUID,以唯一标识元数据文档或该文档所描述的资源。有关示例,请参考 ArcGIS 提供的 add unique identifier.xslt 文件。
- strtoupper() - 将输入文本字符串更改为所有字母均为大写形式。有关示例,请参考 ArcGIS 提供的 add unique identifier.xslt 文件。
- strtolower() - 将输入文本字符串更改为所有字母均为小写形式。
- striphtml() - 如果 XML 元素中包含转义的 HTML,则此函数将返回该 HTML 中所包含的文本,但会删除所有 HTML 标记。有关示例,请参考 ArcGIS 提供的 ESRIISO2.xslt 文件。
- decodenodeset() - 如果 XML 元素中包含转义的 XHTML 或 XML,则此函数将返回节点集,可将该节点集与 msxsl:node-set 函数结合使用,来处理先前转义的各个元素。有关示例,请参考 ArcGIS 提供的 ESRIISO2.xslt 文件。
-
源元数据参数具有复杂的数据类型。如果在模型中使用此工具,需要在模型构建器中为源元数据参数创建变量,方法是右键单击此工具,然后选择获取变量 > 从参数 > 源元数据。
-
如果某 ArcGIS 项目包含的元数据是在 ArcGIS Desktop 9.3.1 或更早版本中使用 FGDC 元数据编辑器创建,或者在当前 ArcGIS Desktop 版本中使用 FGDC 元数据编辑器加载项创建,并且项目的元数据已升级为 ArcGIS 元数据,则 ArcGIS 元数据将保留原始的 FGDC 元数据 XML 元素。此元数据还将包含其他 ArcGIS 元数据元素。
可结合 ArcGIS 提供的 _MPXML2.xsl 文件,利用此工具导出原始 FGDC 元数据元素。在前面的示例中,此文件将仅导出项目的原始 FGDC 元数据,即描述选项卡中 FGDC 元数据部分显示的信息。在输出 XML 文件中,FGDC 元素将按正确方式排序。
可将导出的文件发布至元数据目录中,该目录中的信息必须为 FGDC CSDGM 元数据 XML 格式。导出的文件可用“FGDC XML 模式”、DTD 或 USGS 元数据工具(通常称为 mp)进行验证。USGS MP 元数据转换程序会在处理元数据前内部执行此操作。
-
对于以 HTML 格式发布至外部网站上的元数据,Internet 搜索引擎(如 Google)将为其建立索引,前提是该网站能正确显示其内容。
语法
参数 | 说明 | 数据类型 |
source |
要进行元数据转换的项,或者要进行转换的独立 XML 文件。 | Data Element; Layer |
xslt |
符合 W3C 规范的 XSLT 1.0 样式表文件,用于定义将要执行的转换。 | File |
output |
要创建的文件,用于包含转换后的元数据。 所创建文件的类型取决于 XSLT 样式表所指定的输出方式。 | File |
xsltparam (可选) |
将被传递给 XSLT 样式表的 XML 文件或字符串。 如要获得 XSLT 样式表中的此参数,需在 XSLT 样式表顶端,xsl:output 元素之后,第一个 xsl:template 元素之前添加 <xsl:param name="gpparam" />。相关示例,请参见文件 merge upgraded FGDC with existing.xslt。 | File; String |
代码示例
使用 ArcGIS 提供的 XSLT 样式表 ArcGIS.xsl 将元数据导出为可在网站上使用的 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", "#")