比如我们定义了这么个schema:
<xs:schema xmlns:xs= "http://www.w3.org/2001/XMLSchema "
targetNamespace= "http://a.name/space ">
<xs:element name= "address " type= "xs:string " />
</xs:schema>
那么它表示的意思是address这个元素是属于 "http://a.name/space "命名空间的。你想想看,如果你不指定targetNamespace,那么address是属于什么命名空间是不知道的,它肯定不是属于“http://www.w3.org/2001/XMLSchema”命名空间。指定了这个以后,就能让我们定义的schema中的元素都有自己的命名空间。这个命名空间都是自己定义的。
我想targetNamespace= "http://a.name/space "就是为你自己定义的元素定义了一个包,也就是package的概念,你的这个元素是这个package(命名空间)里的,在别的XML文件里面你可以用<xs:schema xmlns:s= "http://a.name/space" />来引用你前面定义的元素,这里就相当于import的概念了。
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
targetNamespace="http://www.cfx.com"
xmlns="http://www.cfx.com"
attributeFormDefault="unqualified">
<xs:element name="person">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
targetNamespace="http://www.a.com"
xmlns="http://www.a.com"
attributeFormDefault="unqualified">
<xs:element name="teacher">
<xs:complexType>
<xs:sequence>
<xs:element name="address" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
<?xml version="1.0" encoding="UTF-8"?>
<person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsn="http://www.a.com"
xsi:schemaLocation="http://www.a.com test_targetNamespace.xsd
http://www.a.com test_any_10.xsd
" xmlns="http://www.a.com">
<student>杨凯</student>
<xsn:teacher>
<xsn:address>山东省济南市</xsn:address>
</xsn:teacher>
</person>