<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 14, 文章 - 0, 評論 - 15, 引用 - 0
    數據加載中……

    學習java&XML第二天,命名空間

          關于XML的基礎知識一直都是讀的http://www1.xml.net.cn/那本初學進階,講的非常容易懂,就是關于命名空間這一塊沒有給出一個比較好的例子,所以自己整理了一下。
          初學進階里面說命名空間是用于在一個XML里面引入多個DTD的,的確,概念上是這樣子的,不過網上的資料顯示XML的命名空間并不支持DTD格式的格式定義,也就是說,想實現一個XML當中有多個文檔格式的話,就必須要使用Schema。
          先了解一下我們要實現的例子:
          
    client.xml
    <聯系人列表>
      
    <聯系人>
        
    <姓名>張三</姓名>
        
    <ID>001</ID>
        
    <公司>A公司</公司>
        
    <EMAIL>zhang@aaa.com</EMAIL>
        
    <電話>(010)62345678</電話>
        
    <地址>
          
    <街道>五街1234號</街道>
          
    <城市>北京市</城市>
          
    <省份>北京</省份>
        
    </地址>
        
    <直接上司>
          
    <姓名>王五</姓名>
          
    <電話>
            
    <秘書電話>(010)62345678</秘書電話>
            
    <手機>13601234567</手機>
          
    </電話>
        
    </直接上司>
      
    </聯系人>
    </聯系人列表>

          以上是我們想要最終表達的數據格式,其中,聯系人的直接上司屬性有點麻煩,因為整個直接上司表達的是一個“企業經理”的“對象”,該“對象”可以以另外的XML形式體現,如下:

    <?xml version="1.0" encoding="GB2312"?>
    <企業經理>
      
    <姓名>王五</姓名>
      
    <電話>
        
    <秘書電話>(010)62345678</秘書電話>
        
    <手機>13601234567</手機>
      
    </電話>
    </企業經理>

          看以上的兩個文檔,實際上就是我們想表達的數據,兩個抽象的實體“聯系人”和“企業經理”之間存在著一對一的關系。
          但是我們現在有個麻煩,在聯系人列表這個XML當中,有兩個“姓名”元素和兩個“電話”元素,他們表達的是不同的意思,其文檔格式定義也不同。他們分別對應著不同的DTD或者是Schema。
          為了解決這一問題,就有了命名空間的概念,首先,對于我們要最終作用于其上的client.xml,他必須首先區別聯系人和企業經理,做法就是在前面加前綴,比如聯系人的名字改為“聯系人:名字”而企業經理的名字則改為“企業經理:名字”
          其次,兩個不同的文檔定義文件必須首先定義好命名空間,在作用于XML文件的時候,使命名空間和XML聲明中的命名空間一致
          下面分別給出例子代碼:
          client.xml:
    <?xml version="1.0" encoding="GB2312"?>
    <聯系人:聯系人列表 
    xmlns:聯系人
    ="id" 
    xmlns:xsi
    ="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation
    ="id client.xsd id2 manager.xsd"
    xmlns:企業經理
    ="id2">
        
    <聯系人:聯系人>
            
    <聯系人:姓名>張三</聯系人:姓名>
            
    <聯系人:ID>001</聯系人:ID>
            
    <聯系人:公司>A公司</聯系人:公司>
            
    <聯系人:EMAIL>zhang@聯系人.com</聯系人:EMAIL>
            
    <聯系人:電話>(010)62345678</聯系人:電話>
            
    <聯系人:地址>
                
    <聯系人:街道>五街1234號</聯系人:街道>
                
    <聯系人:城市>北京市</聯系人:城市>
                
    <聯系人:省份>北京</聯系人:省份>
            
    </聯系人:地址>
            
    <聯系人:直接上司>
                
    <企業經理:姓名>王五</企業經理:姓名>
                
    <企業經理:電話>
                  
    <企業經理:秘書電話>(010)62345678</企業經理:秘書電話>
                  
    <企業經理:手機>13601234567</企業經理:手機>
                
    </企業經理:電話>
            
    </聯系人:直接上司>
        
    </聯系人:聯系人>
        
    <聯系人:聯系人>
            
    <聯系人:姓名>李四</聯系人:姓名>
            
    <聯系人:ID>002</聯系人:ID>
            
    <聯系人:公司>B公司</聯系人:公司>
            
    <聯系人:EMAIL>li@bbb.org</聯系人:EMAIL>
            
    <聯系人:電話>(021)87654321</聯系人:電話>
            
    <聯系人:地址>
                
    <聯系人:街道>南京路9876號</聯系人:街道>
                
    <聯系人:城市>上海市</聯系人:城市>
                
    <聯系人:省份>上海</聯系人:省份>
            
    </聯系人:地址>
            
    <聯系人:直接上司>aa</聯系人:直接上司>
        
    </聯系人:聯系人>
    </聯系人:聯系人列表>

          client.xsd:
    <?xml version="1.0" encoding="GB2312" standalone="yes"?>
    <!--W3C Schema generated by XMLSpy v2005 sp1 U (http://www.xmlspy.com)-->
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="id" targetNamespace="id" elementFormDefault="qualified">
        
    <xs:element name="EMAIL" type="xs:string"/>
        
    <xs:element name="ID" type="xs:string"/>
        
    <xs:element name="公司" type="xs:string"/>
        
    <xs:element name="地址">
            
    <xs:complexType>
                
    <xs:sequence>
                    
    <xs:element ref="街道"/>
                    
    <xs:element ref="城市"/>
                    
    <xs:element ref="省份"/>
                
    </xs:sequence>
            
    </xs:complexType>
        
    </xs:element>
        
    <xs:element name="城市" type="xs:string"/>
        
    <xs:element name="姓名" type="xs:string"/>
        
    <xs:element name="電話" type="xs:string"/>
        
    <xs:element name="省份" type="xs:string"/>
        
    <xs:element name="聯系人">
            
    <xs:complexType>
                
    <xs:sequence>
                    
    <xs:element ref="姓名"/>
                    
    <xs:element ref="ID"/>
                    
    <xs:element ref="公司"/>
                    
    <xs:element ref="EMAIL"/>
                    
    <xs:element ref="電話"/>
                    
    <xs:element ref="地址"/>
                    
    <xs:element ref="直接上司"/>
                
    </xs:sequence>
            
    </xs:complexType>
        
    </xs:element>
        
    <xs:element name="聯系人列表">
            
    <xs:complexType>
                
    <xs:sequence>
                    
    <xs:element ref="聯系人" maxOccurs="unbounded"/>
                
    </xs:sequence>
            
    </xs:complexType>
        
    </xs:element>
        
    <xs:element name="街道" type="xs:string"/>
        
    <xs:element name="直接上司" type="xs:anyType"/>
    </xs:schema>

          manager.xsd:
    <?xml version="1.0" encoding="GB2312" standalone="yes"?>
    <!--W3C Schema generated by XMLSpy v2005 sp1 U (http://www.xmlspy.com)-->
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="id2" targetNamespace="id2" elementFormDefault="qualified">
        
    <xs:element name="企業經理">
            
    <xs:complexType>
                
    <xs:sequence>
                    
    <xs:element ref="姓名"/>
                    
    <xs:element ref="電話"/>
                
    </xs:sequence>
            
    </xs:complexType>
        
    </xs:element>
        
    <xs:element name="姓名" type="xs:string"/>
        
    <xs:element name="手機" type="xs:string"/>
        
    <xs:element name="電話">
            
    <xs:complexType>
                
    <xs:sequence>
                    
    <xs:element ref="秘書電話"/>
                    
    <xs:element ref="手機"/>
                
    </xs:sequence>
            
    </xs:complexType>
        
    </xs:element>
        
    <xs:element name="秘書電話" type="xs:string"/>
    </xs:schema>

    說明:我在這里用id和id2來表示命名空間是應為很多人會認為那個命名空間的網址會在解析XML的時候被訪問,我一開始也這樣認為,所以改成id來做個測試。

    posted on 2005-03-08 17:32 Boris-Java 閱讀(1023) 評論(0)  編輯  收藏 所屬分類: java&xml

    主站蜘蛛池模板: 看Aⅴ免费毛片手机播放| 亚洲av色福利天堂| 亚洲欧洲日韩极速播放| 91精品成人免费国产片| 亚洲另类春色国产精品| 亚洲一区二区三区免费视频| 久久夜色精品国产噜噜噜亚洲AV| 久久午夜免费鲁丝片| 日韩亚洲Av人人夜夜澡人人爽| 99视频在线免费看| 亚洲视频免费观看| 可以免费看的卡一卡二| 亚洲一本一道一区二区三区| 天天看片天天爽_免费播放| 亚洲精品无码永久在线观看男男 | 成人网站免费看黄A站视频| 亚洲毛片av日韩av无码| 91成人免费福利网站在线| 亚洲成AV人在线观看天堂无码| 99免费观看视频| 亚洲成a人片在线不卡| 国产小视频在线观看免费| selaoban在线视频免费精品| 亚洲精品无码av人在线观看| 91精品免费观看| 亚洲熟伦熟女专区hd高清| 亚洲AV日韩精品一区二区三区| kk4kk免费视频毛片| 久久av无码专区亚洲av桃花岛| 曰批全过程免费视频播放网站 | 亚洲中字慕日产2021| 日韩高清在线免费观看| 国产免费福利体检区久久| 666精品国产精品亚洲 | 中文字幕不卡亚洲| 亚洲电影在线免费观看| 国产AV日韩A∨亚洲AV电影| 亚洲av不卡一区二区三区| 永久免费av无码网站大全| 99精品全国免费观看视频..| 91亚洲精品自在在线观看|