.xsd 模式导入名称空间,我在本地有文件,但无法从外部获取。如何实施?

.xsd schema imports namespace of which I have the file for locally, but it can not be fetched externally. How to implement?

我正在构建一个使用以下架构的应用程序。xsd header 用于建模 objects:

<?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, according to the spec of <import> 来定位和导入该架构。

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

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