.xsd 架构导入命名空间,我在本地拥有该文件,但无法从外部获取如何实施?

问题描述

我正在构建一个应用程序,该应用程序使用以下架构 .xsd 标头来建模对象:

<?xml version="1.0" encoding="ISO-8859-1"?>
<schema xmlns:mh="http://www.kith.no/xmlstds/msghead/2006-05-24" xmlns:xsd="http://www.w3.org/2001/XMLSchema.xsd" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" targetNamespace="http://www.kith.no/xmlstds/msghead/2006-05-24" elementFormDefault="qualified" attributeFormDefault="unqualified">
    <import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd"/>

我能够获取第三行“import namespace=http://www.w3.org/2000/09/xmldsig# schemaLocation="http://www.w3.org/TR/xmldsig-core /xmldsig-core-schema.xsd" 在本地很好,因此项目构建,但我们的外部构建管道由于防火墙拒绝获取此资源,构建失败。

因为我有需要在我的项目结构中本地获取文件(XML sig-core-schema.XSD),是否可以使用此架构的本地实例但保留命名空间,并避免外部完全取?我似乎不知道如何...感谢您的任何建议

解决方法

您可以使用 XML Catalog 来定义架构在本地的位置。

但如果你不能这样做,那么你可以简单地使用 any URI,根据 <import> 的规范来定位和导入该架构。

例如,如果您的架构在同一目录中,那么您可以这样做:

<import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="./xmldsig-core-schema.xsd"/>