亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發(fā) > XML > 正文

在XML模式中擴展枚舉列表

2024-09-05 20:55:29
字體:
供稿:網(wǎng)友
在列表中添加新值是一種常見而且必要的需求。模式設(shè)計者通常希望在系統(tǒng)架構(gòu)中構(gòu)建一種添加附加值的方法,并且該附加值在設(shè)計階段是未知的。模式設(shè)計者如何創(chuàng)建一個可擴展、易于實現(xiàn)的枚舉值列表?本文將介紹幾種實現(xiàn)這一目標的方法。
模式設(shè)計者和實現(xiàn)人員需要一種擴展 XML 模式中現(xiàn)有枚舉列表的方法。不幸的是,XML 模式規(guī)范不允許在這些列表的創(chuàng)建過程中(參閱 參考資料)進行擴展。設(shè)計階段所選的值是固定的,而且都是可用的。盡管有這樣的限制,人們?nèi)允褂酶鞣N替代方案來實現(xiàn)列表擴展。很多使用現(xiàn)有的不能改變的模式的客戶經(jīng)常提出這一要求。他們希望在添加新功能的同時保持向后兼容性。本文中,您將會看到模式設(shè)計者如何克服障礙實現(xiàn)該功能。
枚舉列表 是特定數(shù)據(jù)點的一組指定值。例如,您也許通過固定的值列表查看國家代碼,包括 DE(德國)、US(美國)和 JP(日本)。根據(jù)給定的值集,當一個新國家被識別出時,如 TL(東帝汶)或者 BA(波斯尼亞及黑塞哥維那),該怎么辦?使用以前的名稱列表的客戶必須改變實現(xiàn)來容納新值。
當使用 XML 模式對數(shù)據(jù)建模時,枚舉值被顯式列出。因此,國家代碼列表依次包含各個枚舉值。經(jīng)常需要識別列表中的新值,而且必須將其容納到列表中,模式設(shè)計者試圖找到一種擴展列表的方法,實際上,是將這種方法構(gòu)建到設(shè)計中,允許添加在設(shè)計時未知的附加值。
創(chuàng)建可擴展的枚舉列表
在尋找這一問題的解決方案時,受到四個關(guān)鍵標準的影響:
首先,要在設(shè)計階段之后擴展列表。不管是快速建立一個新的貿(mào)易伙伴還是建立時間關(guān)鍵型的新數(shù)據(jù)字段,在關(guān)鍵時刻進行擴展是一項實際需求。
其次,能夠在解析器中驗證值對于簡化實現(xiàn)是非常關(guān)鍵的。
第三,在單個周期內(nèi)完成解析和驗證是至關(guān)重要的。這就避免了像 Genericode 解決方案一樣,在一個單獨的周期和解析器中進行驗證。對于某些設(shè)置來說,添加新技術(shù)需求會導(dǎo)致成本太高或者太耗時。
最后,解決方案必須能夠向后兼容原始的模式。不兼容的列表更改不能稱為擴展。
有些人認為根本就不應(yīng)該擴展枚舉列表。數(shù)據(jù)建模人員也許認為如果想讓模型包含更多數(shù)據(jù)、擴展模型,那么可以根據(jù)產(chǎn)品創(chuàng)建模式 — 實際上,在需要時創(chuàng)建更大的模型并減少限制。如果能夠控制原始模式和數(shù)據(jù)模型,這樣做是可以的,這種方法也許是理想的方法。但是,如果您需要在設(shè)計階段之后進行實際擴展,這樣的方法是行不通的。
還有人認為擴展枚舉列表的關(guān)鍵是不使用 XML 模式驗證解析器。Genericode(參閱 參考資料)建議在第二層對枚舉列表進行驗證,脫離初始的 XML 模式解析器驗證過程。這種理論是正確的,而且這種方法的應(yīng)用會越來越廣泛。但是,如果要在一個解析周期內(nèi)完成,這種解決方案是無法做到的。在某些情況下,不可能執(zhí)行第二個驗證周期。
當然,您可以在新列表中創(chuàng)建新元素。但是,不能向后兼容原始模式。我們的目標是在保持向后兼容性的同時實現(xiàn)一個可擴展的列表(參閱 參考資料)。
對于本文的目標,這里作出的假設(shè)基于我與客戶打交道的經(jīng)驗 —— 即用附加值擴展現(xiàn)有枚舉列表的需求。另外,我假設(shè)在一個步驟內(nèi)完成 XML 模式解析與驗證等操作。
擴展枚舉列表的必要條件
該擴展示例有四個必要條件:
允許在設(shè)計階段之后擴展枚舉列表。
用解析器驗證枚舉列表。
在一個周期內(nèi)驗證枚舉列表。
維持和原始模式的向后兼容性。
舉例來說,一個團隊需要處理一個區(qū)域產(chǎn)業(yè)協(xié)會的枚舉列表(或任意現(xiàn)有列表)為例,并根據(jù)使用修改模式組件。先前的模式提供 MaritalStatus 組件和值的枚舉列表,如 清單 1 所示。
清單 1. 婚姻狀況枚舉列表

<xsd:simpleType name="MaritalStatusEnumType">
<xsd:restriction base="xsd:normalizedString">
<xsd:enumeration value="Divorced"/>
<xsd:enumeration value="Married"/>
<xsd:enumeration value="NeverMarried"/>
<xsd:enumeration value="Separated"/>
<xsd:enumeration value="SignificantOther"/>
<xsd:enumeration value="Widowed"/>
<xsd:enumeration value="Unknown"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:element name="MaritalStatus" type="MaritalStatusEnumType"/>
假設(shè)一個公司要使用這些值,另外,還要支持它的重要貿(mào)易伙伴使用另一個值。CivilUnion 是一個擴展值,公司識別出該值不屬于原始模式。但是從語義上來說,使用現(xiàn)有元素 —MaritalStatus — 也是可以的。公司要如何實現(xiàn)呢?
回頁首
解決方案 1: 編輯原始模式使其包含新枚舉值
當然,編輯原始模式使其包含新枚舉值是最直接的方法。保留模式的本地副本,然后編輯這些模式以支持公司使用的枚舉值。
優(yōu)點:易于實現(xiàn)
缺點:
需要編輯原始模式,這些模式將逐漸改變,以至于無法控制。如果擴展一個先前存在的列表,那么創(chuàng)建者(貿(mào)易伙伴、協(xié)會等)可能要發(fā)布列表的新版本。您需要將編輯的內(nèi)容傳播到每個新版本中。
手動編輯模式會導(dǎo)致意外的編輯錯誤。
如果您不能(或不想)編輯原始模式,則需要一種替代方法。
回頁首
解決方案 2: 創(chuàng)建新枚舉列表并加入到原始列表中
第二個選擇是創(chuàng)建新枚舉列表,并將其加入到原始枚舉列表中。清單 1 顯示原始婚姻狀況列表。清單 2 顯示最新創(chuàng)建的枚舉列表。
清單 2. 新婚姻狀況枚舉列表

<xsd:simpleType name="MyExtMaritalStatusEnumType">
<xsd:restriction base="xsd:normalizedString">
<xsd:enumeration value="CivilUnion"/>
</xsd:restriction>
</xsd:simpleType>
使用 <xsd:union> 標記將其與原始列表結(jié)合,如 清單 3 所示。
清單 3. 將兩個列表組合起來

<xsd:simpleType name="MaritalStatusType_Union">
<xsd:union memberTypes="MyExtMaritalStatusEnumType MaritalStatusEnumType"/>
</xsd:simpleType>
<xsd:element name="MaritalStatus" type="MaritalStatusType_Union"/>
該解決方案仍然需要對模式進行編輯 — 即將元素 MaritalStatus 由 MaritalStatusType 類型轉(zhuǎn)換為 MaritalStatusType_Union 類型。改動不大,但仍然有一些手動編輯工作。
優(yōu)點:不改變原始枚舉列表。
缺點:
在設(shè)計階段所有的值必須是已知的,防止后期綁定解決方案。
需要 <xsd:union> 標記支持,但有時該標記無法用工具實現(xiàn)。
回頁首
解決方案 3: 創(chuàng)建一個模式,并與原始枚舉類型結(jié)合
現(xiàn)在看一下有關(guān)眼睛顏色的人口數(shù)據(jù)用例。清單 4 顯示這一列表。
清單 4. Person Eye Color 枚舉列表

<xsd:simpleType name="PersonEyeColorType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Black"/>
<xsd:enumeration value="Hazel"/>
<xsd:enumeration value="Gray"/>
<xsd:enumeration value="Brown"/>
<xsd:enumeration value="Violet"/>
<xsd:enumeration value="Green"/>
<xsd:enumeration value="Blue"/>
<xsd:enumeration value="Maroon"/>
<xsd:enumeration value="Pink"/>
<xsd:enumeration value="Dichromatic"/>
<xsd:enumeration value="Unknown"/>
</xsd:restriction>
</xsd:simpleType>
接下來,創(chuàng)建采用新值的模式(一個正則表達式)。該模式是以 x: 為前綴的任意字符串。x: 是標準枚舉列表和擴展列表之間的描繪程序。清單 5 顯示這一模式。
清單 5. 用于擴展的正則表達式

<xsd:simpleType name="StringPatternType">
<xsd:restriction base="xsd:string">
<xsd:pattern value="x:/S.*"/>
</xsd:restriction>
</xsd:simpleType>
最后,使用 <xsd:union> 標記結(jié)合列表與模式,如 清單 6 所示。
清單 6. 枚舉列表與擴展模式的結(jié)合

<xsd:simpleType name="MyExtPersonEyeColorType">
<xsd:union memberTypes="PersonEyeColorType StringPatternType"/>
</xsd:simpleType>
<xsd:element name="PersonEyeColor" type="MyExtPersonEyeColorType"/>
同一節(jié)點擁有標準和擴展值。兩個值很容易分離,而且都可以用解析器驗證,如 清單 7 所示。
清單 7. XML 實例樣例

<PersonEyeColor>Black</PersonEyeColor>
<PersonEyeColor>x:Teal</PersonEyeColor>
優(yōu)點:
同一元素可用于所有數(shù)據(jù)。
用解析器對基本枚舉列表進行驗證。
清晰地分隔擴展值。
該解決方案允許在以后綁定新值。
缺點:
必須解析元素的內(nèi)容,以確定是否已經(jīng)被擴展。
模式解析器必須支持正則表達式。
需要 <xsd:union> 標記支持。
回頁首
解決方案 4:使用單獨的字段用于擴展
在該解決方案中,枚舉字段不會變化。然而,您要在模式中設(shè)計一個擴展字段來容納附加值。在本例中,初始列表是依賴型的(就業(yè)受益者和受養(yǎng)人之間的關(guān)系),如 清單 8 所示。
清單 8. 依賴關(guān)系枚舉列表
上一頁12 下一頁 閱讀全文
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
久久婷婷五月综合| 无码人妻精品一区二区三区温州| 国产精品久久精品视| 久久久噜噜噜久久人人看| 97超级碰在线看视频免费在线看| 清纯唯美日韩制服另类| 在线播放亚洲一区| 伊人久久久久久久久久久久| 在线电影av| aiss精品大尺度系列| 蜜桃av噜噜一区二区三| 三级一区在线视频先锋| 91香蕉视频污在线观看| 国产精品美女久久久久av超清| 中文字幕免费观看一区| 亚洲理论片在线观看| 国产香蕉视频在线看| 国产在线资源一区| 国产成人av片| 日韩久久一区二区三区| а√天堂资源官网在线资源| 欧美美女在线| 91精品在线免费观看| 日本一级片免费看| 中文字幕av亚洲精品一部二部| 国产午夜福利一区二区| 国产午夜久久av| 亚洲理论电影在线观看| www.天天操.com| 六月丁香久久丫| 制服.丝袜.亚洲.中文.综合| 潘金莲一级淫片aaaaa免费看| 亚洲欧洲日韩av| 国产情侣呻吟对白高潮| 免费亚洲电影在线| 真实的国产乱xxxx在线91| 精品国产av 无码一区二区三区| 国内自拍欧美激情| 91视视频在线直接观看在线看网页在线看| 本田岬高潮一区二区三区| 欧美激情在线免费观看| 国内精品久久久久久久影视麻豆| 精品国产亚洲一区二区三区在线观看| 99精品国产99久久久久久白柏| 欧美日韩伦理在线免费| 亚洲欧洲激情在线乱码蜜桃| 国模无码国产精品视频| 国产一区二区三区成人| 亚洲精品7777xxxx青睐| 国产无遮挡在线视频免费观看| 亚洲卡通动漫在线| 中文字幕免费在线播放| 蜜桃精品一区二区| 亚洲影视中文字幕| 曰本人一级毛片免费完整视频| 精品国产乱码久久久| 亚洲av少妇一区二区在线观看| 成人日批视频| 亚洲免费观看高清完整版在线观看| 国内a∨免费播放| 美女免费免费看网站| 一区二区三区精品视频| 欧美在线精品一区| 99久久夜色精品国产网站| 好吊视频在线观看| 成人av三级| 在线观看视频色| 国产精品一区久久久| av在线免费播放| 欧美一区二区三区| 精品视频日韩| 麻豆精品91| 高清av电影| 成人p站proumb入口| 色综合久久久久无码专区| 99精品免费网| 久久久久久久久久久99| 亚洲 精品 综合 精品 自拍| 福利视频导航一区| yourporn在线观看视频| 欧类av怡春院| 欧美亚洲在线播放| 黄色在线免费观看网站| 日韩美女中文字幕| 欧美一区二区三区久久精品茉莉花| 白白色 亚洲乱淫| 成人在线视频亚洲| www.五月色.com| 欧美精品一区二区精品网| 精品在线观看入口| 伪装者在线观看完整版免费| 久久久久久国产免费| 国产视频一区欧美| 欧美丰满美乳xxx高潮www| 久久久久久久久99精品大| 中文字幕在线播放一区| 成年人网站免费视频| 综合国产精品| 精品国产成人av在线免| 麻豆电影在线观看| 国产精品一级在线| 瑟瑟视频在线看| a级毛片免费高清视频| 国产成人亚洲欧美电影| 1234区在线观看视频免费| 看片网站欧美日韩| 老司机av网站| 国产精品成人无码免费| 二区在线播放| 黄色电影网站在线观看| 91大神在线观看线路一区| 亚洲男人的天堂在线视频| 欧美手机在线| 拍拍拍无挡免费播放视频在线观看| 污版网站在线观看| 成人黄色免费网站| 欧美在线激情视频| 国产综合色一区二区三区| 一区二区三区四区不卡| 99这里有精品| 欧美性老头oldtight| 台湾佬中文娱乐久久久| 四虎永久免费地址| 国产伦精品一区二区三区视频小说| 亚洲日本aⅴ片在线观看香蕉| 91成人免费观看网站| 另类人妖一区二区av| 精品久久久久久亚洲| 欧美三级在线视频| 黄色大片在线播放| 96pao国产成视频永久免费| 韩日在线视频| 欧美成人激情视频免费观看| 99视频在线免费观看| 国产h在线观看| 伊人伊成久久人综合网站| 波多野结衣一区二区三区免费视频| 男男做性免费视频网| 黄色成人一级片| 亚洲专区中文字幕| 久久久久久久99| 日本丰满少妇做爰爽爽| 免费一级欧美片在线观看| 在线观看免费高清完整| jizz老师| 91麻豆精品国产自产在线| 亚洲免费视频在线| 国产无套丰满白嫩对白| 精品福利电影| 午夜欧美一区二区三区免费观看| 97在线视频一区| 日韩精品福利网站| 成人午夜毛片| 国产偷国产偷精品高清尤物| 蜜乳av中文字幕| 国产精品成人在线| 精品中文av资源站在线观看| 簧片在线免费看| 国产伊人精品在线| 999国产在线视频| 免费动漫网站在线观看| 久久精品国产一区二区三区免费看| 亚洲另类中文字| 福利视频导航网| 99re国产在线播放| 日本精品久久久久中文字幕| 全彩无遮挡全彩口工漫画h#| 日韩理论在线| 91精品国产乱码久久久久久| 天天干在线影院| av网站手机在线观看| 亚洲精品高清国产一线久久| 国模人体一区二区| 亚洲一卡2卡三卡4卡2021四卡| 亚洲男人都懂的| 国产精品久线在线观看| 宅男视频免费在线观看视频| 亚洲欧美精品久久| 国产www精品| av日韩中文| 国产+成+人+亚洲欧洲自线| gogo在线观看| 538在线精品| 久久中文字幕国产| 久久精品国亚洲| 在线观看无遮挡| 精品国产鲁一鲁一区二区三区| 欧美在线观看在线观看| 精品视频日韩| 波多野结衣高清视频| 国产黄在线免费观看| 黄色精品免费| 久久五月精品中文字幕| 欧美xxxx做受欧美护士| 国产精品电影久久久久电影网| 国产一区二区三区高清| 国模套图日韩精品一区二区| 黄频在线免费观看| 欧美特级xxxxbbbb毛片| 人妻少妇被粗大爽9797pw| 欧美成人精品3d动漫h| 亚洲久草视频| 欧美激情亚洲| 美女视频免费一区| 久久最新资源网| 亚洲无吗一区二区三区| 欧美大片日本大片免费观看| 精品入口蜜桃| 潘金莲一级淫片aaaaaaa| 国产aⅴ精品一区二区三区久久| 蜜桃视频网站www| 无码人妻av一区二区三区波多野| 国产男女在线观看| 玛丽玛丽电影原版免费观看1977| 日本在线不卡一区二区| 天天在线女人的天堂视频| 日韩极品在线观看| 免费看91视频| 中文字幕在线中文字幕日亚韩一区| 在线看日本不卡| 欧美国产欧美亚洲国产日韩mv天天看完整| 国产日韩欧美视频在线| 国产精品视频你懂的| 国产一区二区免费电影| 亚洲视频精选| 国产丝袜护土调教在线视频| 国产超碰在线观看| 91欧美精品午夜性色福利在线| 91久久国产综合久久91精品网站| 91丨porny丨户外露出| 国产又粗又爽视频| 人妻少妇精品无码专区久久| 视频一区二区三区入口| 韩国精品久久久| 亚洲成人精品视频| 成r视频免费观看在线播放| 欧美剧情电影在线观看完整版免费励志电影| 亚洲美女在线一区| 日韩精品乱码免费| 国产日韩视频在线播放| 91免费欧美精品| 欧美色欧美亚洲另类二区精品| 日本成人a视频| 久久久久久久综合狠狠综合| 色呦呦在线视频| 国产精品色在线| 日本少妇吞精囗交| 超碰个人在线| 亚洲精品中文字幕在线观看| 欧美综合色免费| 色综合久久五月天| 欧美图片欧美激情欧美精品| av资源在线免费观看| 国产91对白在线观看九色| 中文字幕av高清在线观看| 久久国产乱子伦精品| 蜜桃久久一区二区三区| 日韩精品免费观看| 九九九九九九精品任你躁| 欧美日韩高清在线播放| 国产在线1区| 国产精品日日做人人爱| 亚洲精品乱码久久久久久9色| 7777精品伊人久久久大香线蕉经典版下载| 日本卡一卡2卡3卡4精品卡网站| 黄动漫视频高清在线| 久久亚洲精品人成综合网| 青草影视电视剧免费播放在线观看| va婷婷在线免费观看| 在线成人av| 亚洲精品伦理在线| 超薄肉色丝袜脚交一区二区| 69av自拍偷拍| 97精品国产97久久久久久| 最近中文字幕免费在线观看| 欧美成人精品一区二区综合免费| 国内外成人免费视频| www.五月色.com| 99国内精品久久久久| 亚洲精品第三页| 国产亚洲欧美精品久久久久久| av片在线观看免费| 2018日日夜夜| 日本片在线看| 久久国产日本精品| 性18欧美另类| 国产又粗又猛又色又| 成视频在线观看免费观看| 色婷婷在线影院| 手机看片1024国产| 一区二区不卡在线视频 午夜欧美不卡'| 电影天堂av在线| 国产精品99免视看9| 污视频网站入口| 台湾无码一区二区| 意大利激情丛林无删减版dvd| 在线不卡一区二区三区| 成年人看的羞羞网站| 成年人午夜剧场| 亚欧日韩另类中文欧美| 黄色av电影在线观看| 欧美日韩视频在线播放| 中文字幕这里只有精品| 日日摸日日添日日躁av| 国内小视频在线看| 亚洲激情免费视频| 国产成人+综合亚洲+天堂| 亚洲乱码中文字幕| 亚洲kkk444kkk在线观看| 亚洲成人激情在线观看| 欧洲精品一区色| 亚洲av永久无码国产精品久久| 国语自产精品视频在线看8查询8| 久久久精品区| 久久婷婷五月综合| 色琪琪综合男人的天堂aⅴ视频| 一本—道久久a久久精品蜜桃| 91日本在线视频| 粉嫩欧美一区二区三区高清影视| 免费成人结看片| 亚洲免费资源在线播放| 宅男宅女性影片资源在线1| 五月天中文字幕一区二区| 26uuu国产电影一区二区| 国产麻豆一区| 久久国产精品网站| 日韩一区二区三区四区五区| 国产91久久久久蜜臀青青天草二|