我看到一些XSD架构文档在其顶层targetNamespace
元素中声明了xmlns:tns
和schema
属性。例如。以下是from here。它们似乎也具有相同的字符串值。我理解targetNamespace
的作用,但xmlns:tns
做了什么呢?
<?xml version="1.0" encoding="UTF-8"?>
<schema
xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/Product"
xmlns:tns="http://www.example.org/Product"
elementFormDefault="qualified">
...
答案 0 :(得分:36)
它允许您稍后在架构中引用命名空间。例如,如果声明一个命名类型,然后又想声明该类型的元素
<complexType name="someType">
<!-- ... -->
</complexType>
<element name="someElement" type="tns:someType" />
简单地说type="someType"
不起作用,因为那将指的是someType
命名空间中的(不存在的)http://www.w3.org/2001/XMLSchema
(模式文件的xmlns="..."
而不是http://www.example.org/Product
命名空间中的那个。