posts - 8,  comments - 4,  trackbacks - 0

          使用 Schema 訪問 XML

          要大致了解 XMLBean 的各種功能,請看一個使用 XML 處理訂購單的示例。訂購單 XML 包含兩方(如兩個公司)交換的數(shù)據(jù)。兩方需要能夠依賴一致的消息形態(tài),并通過 Schema 來指定共同點。

          下面是訂購單 XML 實例的可能外觀。

          <po:purchase-order xmlns:po="http://openuri.org/easypo">
              <po:customer>
                  <po:name>Gladys Kravitz</po:name>
                  <po:address>Anytown, PA</po:address>
              </po:customer>
              <po:date>2003-01-07T14:16:00-05:00</po:date>
              <po:line-item>
                  <po:description>Burnham's Celestial Handbook, Vol 1</po:description>
                  <po:per-unit-ounces>5</po:per-unit-ounces>
                  <po:price>21.79</po:price>
                  <po:quantity>2</po:quantity>
              </po:line-item>
              <po:line-item>
                  <po:description>Burnham's Celestial Handbook, Vol 2</po:description>
                  <po:per-unit-ounces>5</po:per-unit-ounces>
                  <po:price>19.89</po:price>
                  <po:quantity>2</po:quantity>
              </po:line-item>
          <po:shipper>
                  <po:name>ZipShip</po:name>
                  <po:per-ounce-rate>0.74</po:per-ounce-rate>
              </po:shipper>
          </po:purchase-order>

          此 XML 包括一個根元素 purchase-order,該元素具有三種類型的子元素:customerdateline-itemshipper。此 XML 的一種直觀的、基于對象的視圖提供了一個表示 purchase-order 元素的對象。該對象擁有一些方法,可以用于獲取日期,以及 customerline-itemshipper 元素的從屬對象。最后的三個元素每個也都有其自己的方法,可以用這些方法來獲取其內(nèi)部的數(shù)據(jù)。

          查看 Schema

          下面的 XML 是前面的訂購單 XML 的 Schema。它定義了 XML 的“結(jié)構(gòu)”,即它有哪些元素、它們的出現(xiàn)順序、每一個元素都有哪些子元素等等。

          <xs:schema targetNamespace="http://openuri.org/easypo"
              xmlns:po="http://openuri.org/easypo"
              xmlns:xs="http://www.w3.org/2001/XMLSchema"
              elementFormDefault="qualified">
          	
          <xs:element name="purchase-order">
                  <xs:complexType>
                      <xs:sequence>
                          <xs:element name="customer" type="po:customer"/>
                          <xs:element name="date" type="xs:dateTime"/>
                          <xs:element name="line-item" type="po:line-item" minOccurs="0" maxOccurs="unbounded"/>
                          <xs:element name="shipper" type="po:shipper" minOccurs="0"/>
                      </xs:sequence>
                  </xs:complexType>
              </xs:element>
              <xs:complexType name="customer">
                  <xs:sequence>
                      <xs:element name="name" type="xs:string"/>
                      <xs:element name="address" type="xs:string"/>
                  </xs:sequence>
              </xs:complexType>
              <xs:complexType name="line-item">
                  <xs:sequence>
                      <xs:element name="description" type="xs:string"/>
                      <xs:element name="per-unit-ounces" type="xs:decimal"/>
                      <xs:element name="price" type="xs:double"/>
                      <xs:element name="quantity" type="xs:int"/>
                  </xs:sequence>
              </xs:complexType>
              <xs:complexType name="shipper">
                  <xs:sequence>
                      <xs:element name="name" type="xs:string"/>
                      <xs:element name="per-ounce-rate" type="xs:decimal"/>
                  </xs:sequence>
              </xs:complexType>
          </xs:schema>

          此 Schema 通過定義下列內(nèi)容來描述訂購單 XML 實例:

          • 三種復(fù)雜類型的定義:customer、line-item 和 shipper。它們是訂購單元素的子元素所使用的類型。在 Schema 中,復(fù)雜類型用于定義可以具有子元素和特性的元素。嵌套在復(fù)雜類型中的順序元素則列出其子元素。

            它們也是“全局”類型。它們之所以是全局類型,是因為它們位于 Schema 的頂級,也就是說,緊靠 schema 根元素的下面。這意味著可以從 Schema 中的其他任何位置引用這些類型。

          • 復(fù)雜類型中簡單類型的使用。name、address 和 description 元素(以及其他元素)被當(dāng)作簡單類型。它們恰好也是“內(nèi)置”類型。內(nèi)置類型(本例中是具有“xs”前綴的類型)是 Schema 規(guī)范的一部分。(規(guī)范定義了 46 個內(nèi)置類型。)
          • 名為 purchase-order 的全局元素。該元素定義中包含嵌套的復(fù)雜類型定義,以指定 purchase-order 元素的子元素。請注意,復(fù)雜類型中包含對該 Schema 中定義的其他復(fù)雜類型的引用。

          也就是說,Schema 定義了子元素的類型,并將它們的位置描述為根元素 purchase-order 的從屬元素。

          使用 XMLBean 編譯器編譯類似該 Schema 的 XSD 文件時,將生成一個 JAR 文件,該文件會包含從該 Schema 生成的接口。

          posted on 2006-02-16 11:11 Parmy 閱讀(271) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          歡迎!

          <2006年2月>
          2930311234
          567891011
          12131415161718
          19202122232425
          2627281234
          567891011

          常用鏈接

          留言簿(1)

          隨筆檔案(8)

          搜索

          •  

          積分與排名

          • 積分 - 6230
          • 排名 - 2862

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 梓潼县| 湄潭县| 清新县| 河北省| 库尔勒市| 来宾市| 崇阳县| 延庆县| 南郑县| 兴业县| 深水埗区| 确山县| 德保县| 化隆| 仙居县| 普宁市| 辰溪县| 霍城县| 永昌县| 峨山| 怀安县| 泌阳县| 余姚市| 安庆市| 临沂市| 瑞昌市| 鞍山市| 西乌珠穆沁旗| 镇雄县| 麻阳| 米易县| 三明市| 湟中县| 龙口市| 沁水县| 长泰县| 察雅县| 富阳市| 济南市| 西城区| 鄂伦春自治旗|