首页 > 解决方案 > .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),是否可以使用此模式的本地实例但保留命名空间,并完全避免外部获取?我似乎无法找出如何...感谢您的任何建议

标签: javaxmlxsdjaxbxml-namespaces

解决方案


您可以使用XML 目录来定义模式在本地存在的位置。

但是如果你不能这样做,那么你可以简单地使用任何 URI,根据规范<import>来定位和导入该模式。

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

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

推荐阅读