【问题标题】:.xsd schema imports namespace of which I have the file for locally, but it can not be fetched externally. How to implement? [duplicate].xsd 架构导入我在本地有文件的命名空间,但无法从外部获取。如何实施? [复制]
【发布时间】:2021-06-02 02:14:00
【问题描述】:

我正在构建一个应用程序,它使用以下模式 .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),是否可以使用此模式的本地实例但保留命名空间,并避免外部完全获取?我似乎无法找出如何...感谢您的任何建议

【问题讨论】:

    标签: java xml xsd jaxb xml-namespaces


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 感谢您的回复。我很想选择最后一个解决方案,但是当创建与架构对应的 xml 内容并将其发送给我们的第三方时,这会是一个问题,还是只是与这方面相关的命名空间?跨度>
    • 如果打算发布,那么我绝对建议使用目录方法,同样如果您将此模式捆绑在应用程序中,那么肯定将应用程序的目录定义为找到捆绑在其中的这个架构。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 2012-06-01
    • 2012-11-03
    • 1970-01-01
    • 2010-10-29
    • 1970-01-01
    • 2023-03-06
    相关资源
    最近更新 更多