【问题标题】:XML default namespace issueXML 默认命名空间问题
【发布时间】:2009-04-16 18:29:54
【问题描述】:

假设我有以下 XML 模式文件和以下 XML 文档文件。我有两个问题,

  1. 由于 XML Schema 文件中没有指定目标命名空间,Information 元素将位于哪个命名空间?

  2. 在XML文档文件中,使用Information时,它属于哪个命名空间?请注意,在这种情况下,我不会从 XML 文档文件中引用 XML Schema 文件。

XML 架构文件:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:element name="Information" type="xs:string"/>
</xs:schema>

XML 文档文件:

<?xml version="1.0" encoding="utf-8"?>
<Information>Hello XML</Information>

提前致谢, 乔治

【问题讨论】:

    标签: xml schema namespaces


    【解决方案1】:

    信息元素将不在命名空间中。要将其放入默认命名空间,您必须在标签中指定该命名空间。

    <Information xmlns="http://www.mydefaultnamespace.com">
    

    来自Oracle article:

    没有命名空间

    当范围内没有默认命名空间时,不存在命名空间。 {default namespace} 是使用 xmlns 显式声明的名称空间。当 {default namespace} 根本没有使用 xmlns 声明时,说元素在 {default >namespace} 中是不正确的。在这种情况下,我们说元素在 {no namespace} 中。 {no namespace} >也适用于已声明的 {default namespace} 未声明。

    这是一个非常全面的命名空间资源:

    XML Namespaces FAQ

    【讨论】:

    • @dommer,我认为在我的情况下,XML 模式文件中的信息元素是在没有命名空间中定义的。另一个问题,我们如何在 XML 文档文件中引用这样的元素(在无命名空间中)?
    • 我不确定您是否可以明确引用它。你会指什么?没有命名空间。我认为您必须分配一个默认命名空间才能明确引用任何内容 - 但我准备好被证明是错误的。
    • @null,我对如何在 XML 模式中定义默认命名空间和在 XML 文档文件中定义默认命名空间非常感兴趣。你能给我们看一个简单的样本吗?
    • @dommer 你能帮我解决这个问题吗:stackoverflow.com/questions/26699855/…?它说 java 但我认为它对任何 xml 文件都有效..
    【解决方案2】:

    为什么要为没有目标定义架构?这没有意义。

    【讨论】:

    • @leppie, 1. 你的意思是如果架构文件中没有定义目标命名空间,就没有办法在 XML 文档中引用这样定义的 scehma 元素吗? 2.如果我们没有在XML模式文件中指定目标命名空间,那么在--默认命名空间或无命名空间中定义元素的命名空间是什么?
    • 嗨,乔治 :) 1. 是的。 2. 没什么,只是冗长括号中的无意义文本。这取决于您使用什么来读取 XML。 XML 对模式毫无用处。但是,您可以在给定的 XML 验证阅读器中预定义默认模式,这样可以避免您必须定义默认名称空间。在词汇意义上,不提供命名空间几乎就像 C# 中的匿名类。
    • 很酷的答案,leppie!我感兴趣-“但是,您可以在给定的 XML 验证阅读器中预定义默认模式,这样可以避免您必须定义默认命名空间。”,您的意思是在验证阅读器中定义默认模式的方法不是在 XML 文档本身中使用 xmlns?如果是的话,你能给我看一个样品吗? 2. “不给命名空间几乎就像 C# 中的匿名类”——你的意思是不指定目标命名空间(继续)
    • XML 模式文件,或者您的意思是不在 XML 文档中定义命名空间?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-23
    相关资源
    最近更新 更多