XML 之 命名空間詳解

最近學xml 遇到了點小問題qaq 找了n多的博客大佬,反覆看了半小時終於明白了,可能我太蠢了。。。git

基礎的知識就不贅述,直接放「栗子」,切重點:spa

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:lzh="http://info.school.edu.cn" targetNamespace="http://info.school.edu.cn" elementFormDefault="qualified" attributeFormDefault="unqualified">
    <xs:element name="schools">
        <xs:annotation>
            <xs:documentation>Comment describing your root element</xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:sequence>
                <xs:element name="school" maxOccurs="10">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="sch_name" type="xs:string"/>
                            <xs:element name="sch_level">
                                <xs:simpleType>
                                    <xs:restriction base="xs:string">
                                        <xs:enumeration value="一本"/>
                                        <xs:enumeration value="二本"/>
                                        <xs:enumeration value="大專"/>
                                        <xs:enumeration value="中專"/>
                                    </xs:restriction>
                                </xs:simpleType>
                            </xs:element>
                            <xs:element name="sch_location" type="xs:string"/>
                            <xs:element name="area">
                                <xs:simpleType>
                                    <xs:restriction base="xs:decimal">
                                        <xs:totalDigits value="6"/>
                                    </xs:restriction>
                                </xs:simpleType>
                            </xs:element>
                            <xs:element name="principal_name" type="xs:string"/>
                        </xs:sequence>
                        <xs:attribute name="create_time">
                            <xs:simpleType>
                                <xs:restriction base="xs:string">
                                    <xs:pattern value="[0-9]{4}-[0-1][0-9]-[0-3][0-9]"/>
                                </xs:restriction>
                            </xs:simpleType>
                        </xs:attribute>
                        <xs:attribute name="country" default="中國"/>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>
<?xml version="1.0" encoding="UTF-8"?>
<lzh:schools xmlns:lzh="http://info.school.edu.cn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://info.school.edu.cn file:///C:/Users/del/Desktop/lzh.xsd">
    <lzh:school create_time="1985-01-02">
        <lzh:sch_name>淮海工學院</lzh:sch_name>
        <lzh:sch_level>二本</lzh:sch_level>
        <lzh:sch_location>連雲港市</lzh:sch_location>
        <lzh:area>2162.78</lzh:area>
        <lzh:principal_name>寧曉明</lzh:principal_name>
    </lzh:school>
    <lzh:school>
        <lzh:sch_name>清華大學</lzh:sch_name>
        <lzh:sch_level>一本</lzh:sch_level>
        <lzh:sch_location>北京市</lzh:sch_location>
        <lzh:area>392.4</lzh:area>
        <lzh:principal_name>邱勇</lzh:principal_name>
    </lzh:school>
</lzh:schools>

首先知道,targetNameSpace。targetNamespace定義了Schema定義的新元素與屬性的名稱空間。而"http://www.w3.org/2001/XMLSchema"名稱空間則定義了element, attribute, complexType, group, simpleType等元素。若自身並不使用重用組件,僅供外部使用的話,則只定義targetNameSpace就能夠,不用指定別名。rest

而後呢,xmlns:lzh="http://info.school.edu.cn" targetNamespace="http://info.school.edu.cn" 這裏的URI是同樣的,由於xmlns:後的lzh是一個別名一個命名空間的前綴,方便下面的element在遇到elementFormDefault="qualified"的狀況下的使用。code

over~很久沒寫博客,快要去上課了就先醬紫吧emmm~orm

相關文章
相關標籤/搜索