XML 模式验证 (Conversion)
摘要
通过 .NET 3.5 Framework 的 XML 软件来验证 ArcGIS 项的元数据或任何 XML 文件。检查 XML 的目的是判断其结构和内容是否符合 XML 模式的相关规则。可对使用 DTD 或“W3C XML 模式”语言编写的模式应用此工具。
ArcGIS 元数据的格式化方式使得其无法针对 XML 模式直接进行验证。但是,其他元数据地理处理工具可将 ArcGIS 元数据导出为 XML 文件,这些文件遵照元数据标准的 XML 模式或 DTD 进行格式化;可使用此工具对导出的 XML 文件,或已针对元数据标准的 XML 模式进行正确格式化的独立元数据 XML 文件进行验证。
对于指定的 XML 模式或 DTD,如果元数据或 XML 文件无效,则工具信息中会显示由 XML 软件返回的警告或错误。
用法
某些 XML 模式要求指定需要验证的 XML 命名空间,其他的则不要求指定。如果不需要指定任何命名空间时,在“命名空间 URI”参数中提供了值,则所报告的任何警告或错误都与未在“XML 模式”中找到正确信息有关,并且无法识别 XML 文档是否有效。
例如,如果您使用“XML 模式”http://www.fgdc.gov/schemas/metadata/fgdc-std-001-1998.xsd 遵照联邦地理数据委员会 (FGDC) 的Content Standard for Digital Geospatial Metadata (CSDGM) 尝试验证,则不应在“命名空间 URI”参数中赋值。
当使用 DTD 验证 XML 文档时,在“命名空间 URI”参数中,必须提供将要进行验证的元素的名称。例如,如果向引用外部 DTD 的 XML 文档添加 DOCTYPE 声明,则语法可能如下所示:<!DOCTYPE metadata SYSTEM "http://www.fgdc.gov/schemas/metadata/fgdc-std-001-1998.dtd">.要将这一外部 DTD 与该工具结合使用来验证 XML 文档,需在“方案 URL”参数中提供值 http://www.fgdc.gov/schemas/metadata/fgdc-std-001-1998.dtd。在“命名空间 URI”参数中,为 XML 文档内的根元素提供名称:metadata。根元素的内容已验证。
如果正在进行验证的 XML 文档含有对外部 XML 模式或 XML DTD 的嵌入引用,则该模式将无法用于验证。要用于验证的模式以及要验证的命名空间或根元素,必须在工具的“方案 URL”和“命名空间 URI”参数中明确指定。
如果出现消息正在添加模式...,则表明正在加载该模式。将在此处报告于模式中找到的所有错误或警告。
如果出现消息正在读取文档...,则表明已开始验证元数据或 XML 文件。将在此处报告于元数据或 XML 文件中找到的所有错误或警告。
若已按照 ISO 19139 元数据标准 Geographic information — Metadata — XML schema implementation 对元数据 XML 文件进行了格式化,并基于此标准随附的 2005 版本的 XML 模式对元数据进行验证,则此工具将报告 XML 模式文件的问题。此警告仅由 .NET 3.5 Framework 的 XML 软件报告,且出现在以下工具消息中:验证警告 (423:8):如果“minOccurs”不等于 0,则空选择条件得不到满足。该警告表明 423 行中的第 8 个字符存在问题;该问题发生在 XML 模式文件 coverage.xsd 中。对于同一 XML 模式,其他 XML 解析器则不会报告任何问题。
-
源元数据参数具有复杂的数据类型。如果在模型中使用此工具,需要在模型构建器中为源元数据参数创建变量,方法是右键单击此工具,然后选择获取变量 > 从参数 > 源元数据。
-
在模型构建器中使用此工具时,输出元数据参数从源元数据参数获取。
语法
参数 | 说明 | 数据类型 |
source |
要进行元数据验证的项,或者要进行验证的独立 XML 文件。 | Data Element; Layer |
schemaurl |
XML 模式或 XML DTD,用于描述有效 XML 文档的结构和内容。 | String |
nsuri (可选) |
如果适用,将针对“XML 模式”验证 XML 命名空间,或针对 XML DTD 验证文档的根元素。 如果该值不适用于正在使用的“XML 模式”,则改用井号 (#) 代替命名空间 URI。 | String |
代码示例
使用联机“ISO 19139 XML 模式”来验证包含 ISO 19139 格式化元数据的独立 XML 文件。这些“XML 模式”要求指定需要验证的 XML 空间名。
import arcpy from arcpy import env env.workspace = "C:/data" #set local variables schema = "http://www.isotc211.org/schemas/2005/gmd/metadataEntity.xsd" namespace = "http://www.isotc211.org/2005/gmd" arcpy.XMLSchemaValidator_conversion("metadata_19139.xml", schema, namespace)
使用“FGDC XML 模式”文件的本地复本来验证包含 FGDC CSDGM 格式化元数据的独立 XML 文件。可从 FGDC 元数据标准网站下载这些内容。这些“XML 模式”不必指定需要验证的 XML 空间名。
import arcpy from arcpy import env env.workspace = "C:/data" #set local variables schema = "c:/metadata/FGDCxsd/non-annotated/fgdc-std-001-1998.xsd" arcpy.XMLSchemaValidator_conversion("metadata_fgdc.xml", schema, "#")