当您向文档添加xml架构时,我知道xmlns实际上不是xsd文件的位置。它是否正确?
有任何反馈吗?
答案 0 :(得分:1)
Spring的例子:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"
default-lazy-init="true">
</beans>
xsi:schemaLocation将名称空间URI映射到schemata的实际位置。
然后,典型的解析环境使用解析器将这些解析器映射到本地副本。
答案 1 :(得分:1)
您有一个包含目标命名空间和限定元素的模式(这意味着您不必为元素添加前缀以应用目标命名空间):
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.exemple.com/my-namespace-URI"
xmlns="http://www.exemple.com/my-namespace-URI"
elementFormDefault="qualified">
<-- Your schema definition -->
</xs:schema>
您必须将其包含在根元素中。首先是xml-schema命名空间:
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
(从此处xsi:
前缀对应于此命名空间)
然后引用schemaLocation属性
xsi:schemaLocation="http://www.exemple.com/my-namespace-URI my.xsd"
其中my.xsd
是XSD文件的位置(默认情况下相对于XML文档的位置)。您可以输入完整的网址,例如
xsi:schemaLocation="http://www.exemple.com/my-namespace-URI http://www.exemple.org/xml/my.xsd"
这样就可以提供你的文件:
<?xml version="1.0"?>
<doc xmlns="http://www.exemple.com/my-namespace-URI"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.exemple.com/my-namespace-URI http://www.exemple.org/xml/my.xsd">
<!-- Document content -->
</doc>
请注意,XSD文件URL不一定与名称空间URI相关。
答案 2 :(得分:0)
xmlns
引用名称空间URI,它是架构的符号名称。 XML解析器可以根据实际的模式实例来解析这些名称空间URI。一些XML文档会以schemaLocation
的形式给出一个提示,它应该是实际模式文件的URL,但是解析器可以自由地忽略它。
最佳做法是让解析应用程序拥有所需模式的本地(或可能是缓存)副本,并使其使用模式目录来解析这些本地模式的名称空间URI。