首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XMLSchema和XMLSchema-没有schemaLocation的实例命名空间

XMLSchema和XMLSchema-没有schemaLocation的实例命名空间
EN

Stack Overflow用户
提问于 2015-08-21 08:19:42
回答 1查看 2.3K关注 0票数 3

关于xml名称空间,我有几个问题,我将用以下三段代码来解释:

1 -非常简单的XML:

代码语言:javascript
复制
<?xml version="1.0" encoding="US-ASCII"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
        xmlns:tns="http://www.library.com"
        targetNamespace="http://www.library.com"
        elementFormDefault="qualified"
        attributeFormDefault="unqualified">

<element name="Book" type="tns:BookType" />

<complexType name="BookType">
  <sequence>
    <element name="Title" type="string" />
    <element name="Author" type="string" />
  </sequence>
</complexType>

</schema>

使用新创建的XML模式的2 - xml:

代码语言:javascript
复制
<?xml version="1.0" encoding="US-ASCII"?>
<Book xmlns:xsi="http://www.wc3.org/2001XMLSchema-instance"
            xsi:schemaLocation="http://www.library.com ex9.xsd"
            xmlns="http://www.library.com">

   <Title>Scherlock Holmes</Title>
   Author>Arthur Conan Doyle</Author>
</Book>

3 -另一个与上述两种代码无关的片段代码:

代码语言:javascript
复制
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:jee="http://www.springframework.org/schema/jee" xmlns:util="http://www.springframework.org/schema/util"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd 
                        http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.2.xsd 
                        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd">
    ....
    </beans>

问题是:

  1. 为什么我们总是声明像xmlns="http://www.w3.org/2001/XMLSchema"xmlns:xsi="http://www.wc3.org/2001/XMLSchema-instance"这样的名称空间,但是没有给出这些名称空间的schemaLocation
  2. XML解析器如何知道(例如用于验证) xmlns="http://www.w3.org/2001/XMLSchema"定义了<attribute><complexType><sequence>等元素?
  3. 阅读许多文章,我理解名称空间和它们的URI,基本上没有任何意义,它们只是用来避免名称冲突。但我也读到,如果您声明xmlns="http://www.w3.org/2001/XMLSchema"名称空间错误,XML文件将无效,为什么?
  4. 为什么在最后一个代码片段中始终没有给出http://www.w3.org/2001/XMLSchema-instance.的schemaLocation
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-21 12:09:36

  1. 这些内置的命名空间与XSD组件本身有关。不需要schemaLocation,因为XML建议隐含了它们的定义。
  2. 一个符合的XML解析器从定义上可以理解xs:attribute的含义等等。
  3. 我不会说名称空间毫无意义。名称空间不仅是区分其他标识命名的组件的一种方式,还可以用于将组件的使用与其他XSD中的集体定义相关联。
  4. 正如#1中所述,http://www.w3.org/2001/XMLSchema-instance是一个内置的名称空间,由组件组成,其定义已经被XML建议所暗示。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32135573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档