posts - 8,  comments - 4,  trackbacks - 0

          使用 Schema 訪問 XML

          要大致了解 XMLBean 的各種功能,請看一個使用 XML 處理訂購單的示例。訂購單 XML 包含兩方(如兩個公司)交換的數據。兩方需要能夠依賴一致的消息形態,并通過 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 元素的從屬對象。最后的三個元素每個也都有其自己的方法,可以用這些方法來獲取其內部的數據。

          查看 Schema

          下面的 XML 是前面的訂購單 XML 的 Schema。它定義了 XML 的“結構”,即它有哪些元素、它們的出現順序、每一個元素都有哪些子元素等等。

          <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 通過定義下列內容來描述訂購單 XML 實例:

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

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

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

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

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

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

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


          網站導航:
           
          歡迎!

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

          常用鏈接

          留言簿(1)

          隨筆檔案(8)

          搜索

          •  

          積分與排名

          • 積分 - 6212
          • 排名 - 2860

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 河池市| 叙永县| 永城市| 海门市| 临城县| 富源县| 朔州市| 三台县| 龙江县| 汤阴县| 县级市| 平谷区| 肇东市| 上蔡县| 东兰县| 嘉鱼县| 利川市| 射阳县| 抚远县| 锡林郭勒盟| 武城县| 古丈县| 阿鲁科尔沁旗| 蒙城县| 台东市| 镇康县| 宁国市| 正宁县| 扶沟县| 延长县| 南汇区| 五指山市| 托克托县| 西畴县| 晋城| 乾安县| 兴宁市| 新竹县| 丰镇市| 平阳县| 九龙坡区|