xmlns:tns和targetNamespace

时间:2013-06-25 11:01:35

标签: xsd xml-namespaces

我看到一些XSD架构文档在其顶层targetNamespace元素中声明了xmlns:tnsschema属性。例如。以下是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">
...

1 个答案:

答案 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命名空间中的那个。