xml - 没有命名空间属性的模式导入

标签 xml import namespaces xsd schema

嗨,

如果我导入这样的命名空间:

<xs:import namespace="UniqueIRIstyleNameSpaceName" schemaLocation="mySchema.xsd"></xs:import>

我知道 mySchema.xsd 创建了一个 targetNamespace="UniqueIRIstyleNameSpaceName"。
现在如果我去:http://www.w3schools.com/schema/el_import.asp并读取绑定(bind)到“xs”的命名空间中定义的“import”元素的相应API,它说属性“namespace”是可选的。

下面是问题:
  • 此类导入的属性“namespace”的值必须始终与相应模式 (.xsd) 中的“targetNamespace”的值相同吗?
  • 如果是这样:完全放弃“命名空间”属性不是更容易吗?
  • 如果不是:...我遇到了大麻烦,因为我似乎还没有完全理解命名空间的概念,并且对一些查找信息以关闭泄漏的关键字非常感兴趣:)

  • 我问这个是因为我目前在我的职业生涯中第 5 次使用 XML/XSD 并且从未在其他变体中看到它,但“命名空间”属性始终存在并且匹配“目标命名空间”在相应模式中的值。

    非常感谢提前和问候

    杰巴

    最佳答案

    MUST the value of attribute 'namespace' of such an import always be the same as the value of 'targetNamespace' in the corresponding schema (.xsd)?



    是的,一点没错。
    您不能重新定义导入架构的目标命名空间!

    这确实是可能的,但使用 <xs:include>并且仅当包含的架构没有目标命名空间时。
    这种技术被称为“变色龙设计”。

    If so: Wouldnt it be easier to just completly leave away the 'namespace' attribute at all?



    不。唯一应该省略 namespace 的情况属性是导入模式时
    没有目标命名空间。也就是说,它的目标命名空间是全局命名空间。

    <xs:import> namespace属性是首要的。指定导入的命名空间可能足以让模式处理器导入必要的模式。 schemaLocation而是一个在哪里找到它的提示。

    关于xml - 没有命名空间属性的模式导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18981572/

    相关文章:

    java - 如何在android中从java获取变量值到xml文件?

    mysql - 从csv导入mysql时保留特殊字符

    go - RSA key 导出和导入

    php - 在基本的 Laravel 5.4 教程中找不到类 'Task'

    c# - CLR 如何在运行时区分不同程序集中同名但没有命名空间的类?

    java - IntelliJ : How to setup variables in settings. xml?

    java - 在android中覆盖/替换/res/values/color.xml

    java - 检查 XML 中的 boolean 属性(Spring)

    htmlunit 上的 java.util.ConcurrentModificationException

    ruby-on-rails-3 - 带有命名空间模型的 Rails 自定义验证消息