<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="n1schema"
    targetNamespace="http://tempuri.org/n1schema.xsd"
    elementFormDefault="qualified"
    xmlns="http://tempuri.org/n1schema.xsd"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
>    <xs:complexType name="Address">
        <xs:sequence>
            <xs:element name="Country" type="xs:string"></xs:element>
            <xs:element name="Province" type="xs:string"></xs:element>
            <xs:element name="City" type="xs:string"></xs:element>
        </xs:sequence>
    </xs:complexType>
</xs:schema>
我知道xmlns="http://tempuri.org/n1schema.xsd" 是命名空间意思,targetNamespace又是什么?作用是什么?找了很多资料感觉作用也是和xmlns一样啊。 xmlns:xs="http://www.w3.org/2001/XMLSchema 这个表示什么呢,网上说法不一,我理解就是定义命名空间的前缀,但是内容应该和xmlns是一样的啊,为什么这3个属性有时候会不一样啊?
谢谢

解决方案 »

  1.   

    XML 文件通常是需要进行验证的。一种验证方式是 DTD, 另一验证方式就是 Schema.
    Schema 本身也是一个 XML 。你这里的 XML 应该是一个 Schema 。
    在一个 XML 文件中,每个元素都可以有自己的 namespace 。如果你不需要对 XML 中的某个元素进行 Schema 验证,那么该元素的 namespace 你可以任意指定(但通常以 URL 的形式给出)。但如果你需要对一个元素进行 Schema 验证那么该元素的 namespace 你是不能随意写的。此时该 namespace 要与验证该元素的 Schema 中
    的 targetNamespace 指定的值完全相同。否则验证时应该提示错误。LZ 的这个 XML 应该就是一个 Schema 。如果一个 XML 中的某个元素要使用该 Schema 进行验证。那么该元素的 namespace 要与 LZ 这个 Schema 中的 namespace 一致。