我对xml名称空间有一些疑问,我将用以下三段代码解释:
1-非常简单的XML模式:

<?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>

2-使用新创建的XML架构的XML:
<?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-另一个与上述两个代码没有关系的片段代码:
<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>

问题是:
为什么我们总是像
xmlns=“http://www.w3.org/2001/xmlschema”和xmlns:xsi=“http://www.wc3.org/2001/xmlschema-instance”但是没有给出这些的schemaLocation?
XML解析器如何知道(例如验证)
xmlns=“http://www.w3.org/2001/xmlschema”定义<attribute><complexType><sequence>等元素?
阅读了许多文章,我了解了名称空间和它们的uri,
基本上没什么意思,只是用来避讳名字
冲突。但我也看到如果你宣布
xmlns=“http://www.w3.org/2001/xmlschema”命名空间错误XML文件将无效,为什么?
为什么在最后一个代码片段中总是没有为
http://www.w3.org/2001/XMLSchema-instance

最佳答案

那些内置的名称空间属于xsd组件本身。不
schemaLocation是必要的,因为它们的定义隐含在
XML模式建议。
根据定义,一致的XML解析器将理解
xs:attribute等。
我不会说名称空间毫无意义。不仅仅是一种方式
区分以其他方式标识命名的组件、命名空间
也可用于将组件的使用与其
另一个xsd中的集合定义。
如1所述,http://www.w3.org/2001/XMLSchema-instance
由定义为
已经被xml模式建议所暗示。

09-26 13:03