问题描述
我正在构建一个应用程序,该应用程序使用以下架构 .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"/>