【问题标题】:Is 'xmlns:web' attribute special in XML?'xmlns:web' 属性在 XML 中是否特殊?
【发布时间】:2012-09-05 12:21:21
【问题描述】:

Java EE 的web.xml 文件的很多例子都以

开头
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" <----------
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
    id="WebApp_ID"
    version="2.5">
...

虽然我想我理解 what 'xmlns:anything' generally means 并且我想 xsi:schemaLocation 只是一张地图 XML namespace -&gt; schema file (XSD?) URI 我不知道 xmlns:web 应该是什么意思。

  1. 它是带有web前缀的http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd命名空间的声明吗?如果是这样,为什么大多数示例中都没有使用前缀?为什么命名空间以 '.xsd' 结尾——这是非标准的?

  2. 如果是默认命名空间的架构位置声明,我在哪里可以找到此功能的文档?

示例示例:

【问题讨论】:

  • 查看引用文件:java.sun.com/xml/ns/javaee/web-app_2_5.xsd,它包含web.xml prolog 的另一个示例。这次没有奇怪的线,所以我假设,在@Michael Kay 评论之后,这是一个错误,在不理解的情况下从一个例子复制到另一个例子。

标签: xml web.xml xml-namespaces


【解决方案1】:

命名空间只是一个字符串,通常采用 URI 的形式。它以 .xsd 结尾的事实可能意味着定义它的人对使用相同的字符串来标识名称空间和名称空间的模式有一些好主意,这可能是一个好主意,也可能不是一个好主意,但就目前而言就命名空间而言,是无关紧要的。

【讨论】:

  • 感谢您的回答。虽然这听起来完全合理,但它并不能解决我的根本问题:为什么,哦,为什么人们在这么多 web.xml 示例中放置标记行?
  • 好问题。我不知道。可能他们都是从某个地方的示例中复制的。也许它在某些情况下使用,但在这种情况下没有。如果你把它排除在外,它会起作用吗?
  • 我怀疑这是否曾经被用作命名空间。为什么会有命名空间 X 和命名空间 Y,巧合的是,Y 是 X 的 XSD 的位置? ...如果它确实有时被用作命名空间,我怀疑开发人员这样做的理智:)
  • 嗯,我遇到过 XML 词汇表,其中命名空间声明以令人惊讶的方式使用:例如“如果文档声明命名空间 X,那么接收者可以假定它不包含私有扩展”,其中命名空间声明不以任何其他方式使用。我不知道是不是这样。
  • Technically命名空间标识符不是“只是一个字符串,通常是URI的形式”,但必须是URI的形式(IRI ) 参考。
【解决方案2】:

xmlns:web 没有什么特别之处。这只是 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd 命名空间的声明,以及该命名空间与 web 前缀的关联。

【讨论】:

  • 感谢您的回答。虽然这听起来完全合理,但它并不能解决我的根本问题:为什么,哦,为什么人们在这么多 web.xml 示例中放置标记行?
  • 因为这是元素所在的命名空间。该行定义了 web.xml 文件中使用的 web: 前缀。
  • 我在 4 个当前链接的示例中搜索了 'web:',但一无所获。命名空间前缀能否以其他形式使用?
猜你喜欢
  • 2020-04-05
  • 1970-01-01
  • 2011-11-03
  • 2021-12-26
  • 1970-01-01
  • 1970-01-01
  • 2012-07-09
  • 1970-01-01
相关资源
最近更新 更多