明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

XML簡(jiǎn)明圖文詳細(xì)教程第10課 :在C++ XML DSO中使用主/細(xì)節(jié)特征

[摘要]什么是主/細(xì)節(jié)特征?新的主/細(xì)節(jié)特征允許你連接到一個(gè)分層紀(jì)錄集的當(dāng)前記錄上,這就意味著你可以把當(dāng)前紀(jì)錄的子元素連接到一個(gè)截然不同的表中。例如,考慮一下的XML:<orders> <...
什么是主/細(xì)節(jié)特征?
新的主/細(xì)節(jié)特征允許你連接到一個(gè)分層紀(jì)錄集的當(dāng)前記錄上,這就意味著你可以把當(dāng)前
紀(jì)錄的子元素連接到一個(gè)截然不同的表中。例如,考慮一下的XML:
<orders>
  <order order_number="2233">
    <customer>
      <name>John Smith</name>
      <custID>192883</custID>
    </customer>
    <item>
      <name>Fly Swatter</name>
      <price>9.99</price>
    </item>
  </order>
  <order order_number="2234">
    <customer>
      <name>Marea Angela Castaneda</name>
      <custID>827145</custID>
    </customer>
    <item>
      <name>Fly Paper</name>
      <price>15.99</price>
    </item>
  </order>
  <order order_number="2235">
    <customer>
      <name>Amy Jones</name>
      <custID>998022</custID>
    </customer>
    <item>
      <name>Mosquito Netting</name>
      <price>38.99</price>
    </item>
  </order>
</orders>
你可以允許你的用戶通過(guò)ID來(lái)定位訂單,并顯示(也僅能顯示)當(dāng)前訂單上的客戶和項(xiàng)
目信息,你的用戶并不能查看所有訂單的信息——僅能查看自己感興趣的。
如何連接到細(xì)節(jié)?
連接到層次結(jié)構(gòu)中的底層(細(xì)節(jié)信息)的關(guān)鍵是了解你的數(shù)據(jù)的結(jié)構(gòu),上面的XML在根元
素<orders>中含有有三個(gè)元素;赬ML DSO所采用的試探法,每一個(gè)訂單都映射到一個(gè)
包含"order_number"、 "customer"、 和 "item"等域的行集中。"order_number"列包含
"order_number"屬性的值,"customer"和"item"列包含指向各自的"customer"和"item"
紀(jì)錄集的指針。"customer"記錄集中包含帶有"name"和"custID"域的元素的值,"item"
記錄集中包含帶有"name"和"price"域的元素的值。
這樣,在頂層("orders")紀(jì)錄集中,你可以找到"order_number"的值,然后允許你的
用戶通過(guò)"order_number"定位訂單。
<P>ORDER NUMBER: <SPAN DATASRC="#xmlDoc" DATAFLD="order_number"></SPAN></P>
現(xiàn)在再添加幾個(gè)按鈕來(lái)幫助用戶瀏覽"orders"紀(jì)錄集。
<INPUT TYPE=BUTTON value="Previous Order" onclick="xmlDoc.recordset.movePrev
ious()">
<INPUT TYPE=BUTTON value="Next Order" onclick="xmlDoc.recordset.moveNext()">

為了在當(dāng)前紀(jì)錄的子元素中檢索這個(gè)值,創(chuàng)建一張表并把表的 DATASRC 屬性設(shè)置為"#x
mlDoc",就和上面所作的一樣,但是這時(shí)也要把它的 DATAFLD 屬性設(shè)置為 "customer"
。這是為了告訴表連接到"customer"紀(jì)錄集中的數(shù)據(jù)上,而"customer"紀(jì)錄集由"order
s"紀(jì)錄集中的"customer"域的指針指向。
<TABLE DATASRC="#xmlDoc" DATAFLD="customer" BORDER>
  <THEAD><TH>NAME</TH><TH>ID</TH></THEAD>
  <TR>
    <TD><SPAN DATAFLD="name"></SPAN></TD>
    <TD><SPAN DATAFLD="custID"></SPAN></TD>
  </TR>
</TABLE>
接著對(duì)"item"元素作同樣的處理。
<TABLE DATASRC="#xmlDoc" DATAFLD="item" BORDER=1>
  <THEAD><TR><TH>ITEM</TH><TH>PRICE</TH></TR></THEAD>
  <TR>
    <TD><SPAN DATAFLD="name"></SPAN></TD>
    <TD><SPAN DATAFLD="price"></SPAN></TD>
  </TR>
</TABLE>
現(xiàn)在,當(dāng)用戶點(diǎn)擊按鈕并移到紀(jì)錄集中的后一個(gè)或前一個(gè)紀(jì)錄時(shí),表中的數(shù)據(jù)會(huì)相應(yīng)的
改變到當(dāng)前紀(jì)錄。