在C++ XML DSO中使用主/細(xì)節(jié)特征
來(lái)源:中國(guó)站長(zhǎng)學(xué)院 |作者:無(wú)從考證
什么是主/細(xì)節(jié)特征?新的主/細(xì)節(jié)特征允許你連接到一個(gè)分層紀(jì)錄集的當(dāng)前記錄上,這意味著你可以把當(dāng)前紀(jì)錄的子元素連接到一個(gè)截然不同的表中。例如,考慮一下的XML:JohnSmith192883FlySwatter9.99MareaAngelaCastaneda827145FlyPaper15.99AmyJones998022MosquitoNetting38.99你可以允許你的用戶通過(guò)ID來(lái)定位訂單,并顯示(也僅能顯示)當(dāng)前訂單上的客戶和項(xiàng)目信息,你的用戶并不能查看所有訂單的信息——僅能查看自己感興趣的。如何連接到細(xì)節(jié)?連接到層次結(jié)構(gòu)中的底層(細(xì)節(jié)信息)的關(guān)鍵是了解你的數(shù)據(jù)的結(jié)構(gòu),上面的XML在根元素中含有有三個(gè)元素。基于XMLDSO所采用的試探法,每一個(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"定位訂單。ORDERNUMBER:現(xiàn)在再添加幾個(gè)按鈕來(lái)幫助用戶瀏覽"orders"紀(jì)錄集。
為了在當(dāng)前紀(jì)錄的子元素中檢索這個(gè)值,創(chuàng)建一張表并把表的DATASRC屬性設(shè)置為"#xmlDoc",和上面所作的一樣,但是這時(shí)也要把它的DATAFLD屬性設(shè)置為"customer"。這是為了告訴表連接到"customer"紀(jì)錄集中的數(shù)據(jù)上,而"customer"紀(jì)錄集由"orders"紀(jì)錄集中的"customer"域的指針指向。NAMEID接著對(duì)"item"元素作同樣的處理。ITEMPRICE現(xiàn)在,當(dāng)用戶點(diǎn)擊按鈕并移到紀(jì)錄集中的后一個(gè)或前一個(gè)紀(jì)錄時(shí),表中的數(shù)據(jù)會(huì)相應(yīng)的改變到當(dāng)前紀(jì)錄。