這項轉換接受 UML 套件作為其來源,並在套件內將適當的類別轉換成綱目的元素來產生 XML 綱目。產生的綱目儲存在名稱為 schema 的資料夾中,此資料夾是您在專案中所指定的轉換目標。檔案包含的綱目名稱和套件的名稱相同,但是副檔名為 .xsd。
例如,假設您的 UML 套件名稱為 PurchaseOrder,其中包含的類別名稱為 Address。當您以此套件作為其來源來執行轉換時,會產生下列 XML 綱目。
如果您選取 UML 模型(至少有一個套件)作為來源,在具有造型 <<XSDProfile::schema>> 或關鍵字 schema 的模型中,這項轉換會為每個套件產生 XML 綱目。 如果您將轉換內容的處理未標示的套件值設定為 True,轉換會為每個套件產生 XML 綱目。
軟體中隨附一組 UML 模型範例,可作為 UML 至 XSD 轉換的來源。安裝「UML 至 XSD」轉換之後,需要將範例從安裝目錄複製到工作區中。比方說,如果已在 RSA/eclipse 中安裝軟體,則範例會在下列資料夾中:RSA/eclipse/plugins/com.ibm.xtools.transform.samples.uml2.xsd/examples。 請執行下列動作在工作區中複製範例:
附註:開啟模型範例時您可能會看到一個對話框,說明模型正在使用舊版的 XSDProfile,並詢問您是否要移轉至新的設定檔。您應該按一下是來移轉至新版本的設定檔。
如果要執行這項轉換:
請選擇性地執行下列動作:
如果您要建立非一般 XML 綱目的 UML 模型,這些步驟是必要的。如需在 UML 中建立 XML 綱目模型的相關資訊,請參閱在 UML 中建模 XML 綱目:最佳實務練習一節。
這時轉換會產生 XSD 綱目,並將它們放在指定專案的資料夾 schema 中。使用「導覽器」視圖來檢查產生的綱目。
您也可以使用 XSD 範本模型建立 UML 模型。這樣做的好處是已匯入必要的模型程式庫 XSDDataTypes, 且 XSD 設定檔已套用至套件。
這時轉換會產生 XSD 綱目,並將它們放在指定專案的資料夾 schema
中。使用「導覽器」視圖來檢查產生的綱目。
這項轉換接受 UML 模型做為來源,此模型至少含有一個套件或一或多個 UML 套件。
這項轉換接受專案作為其目標。
這項轉換定義下列轉換內容:
內容 | 說明 |
目標名稱空間 | 轉換產生的綱目之目標名稱空間。這個內容的值是字串,例如,http://www.ibm.com/SampleXSDTransformation。 |
目標名稱空間字首 | 轉換所產生綱目的目標名稱空間之字首。這個內容的值是字串,例如,sxt。 |
處理不具造型或關鍵字的 UML 類別 |
這個內容決定如果類別沒有任何相關聯的造型或關鍵字時,轉換程序是否處理 UML 類別。 這個內容的值可以是 True 或 False。預設值設為 True,且轉換會在最上層的套件中處理所有類別。 (轉換目前尚無法處理巢狀套件)。 如果不需要在套件中的所有類別上套用轉換,您必須將值設為 false, 並在您要轉換的類別上,套用 XSDProfile 中適當的模板或關鍵字。 |
處理不具造型或關鍵字的 UML 套件 |
這個內容決定如果類別沒有任何相關聯的造型或關鍵字時,轉換程序是否處理 UML 套件。 這個內容的值可以是 True 或 False。預設值設為 True,且轉換會處理所有在最上層的套件。(目前轉換並不處理巢狀套件)。 如果您不需要將這項轉換套用至模型中的所有最上層套件,則需將其值設定為 False,並且從 XSDProfile 套用適當的造型 <<schema>> 或關鍵字 schema 到要轉換的套件中。 |
隱含地將巢狀類別轉換至匿名類型 |
當巢狀類別之間沒有明確的關聯時,這個內容會決定轉換是否將巢狀類別轉換成匿名類型。 這個內容的值可以是 True 或 False。預設值為 False,而且只有巢狀類別和它之間有關聯時,這項轉換才會將巢狀類別轉換成匿名類型。如果值設為 true, 則所有巢狀類別會轉換成具有 XSD 類型的匿名類型,而 XSD 類型對應的巢狀類別含有這些匿名類型的元素。 將這個內容的值設為 true 來隱含地產生匿名類型有諸多限制,因此不建議採用。 |
「UML 至 XSD」轉換支援在 UML 中非一般 XML 綱目的建模,使用一個 UML 建構的小子集來代表 XML 綱目元素。這個子集包含下列 UML 元素:類別、內容、一般化、關聯 和 相依關係。 若要使用此子集來代表 XML 綱目元素,例如簡式類型、 複數類型、 屬性、元素、 可重覆使用的群組等, 您必須將 XSD 設定檔套用至來源 UML 模型, 並使用此設定檔中的模板來標示,同時將模板的內容設為適當的值。
下列類別圖顯示 XSD 設定檔的 UML 模型。
下表說明造型及其內容。
造型 | meta 類別延伸 | 內容 | 註解 |
annotation | Comment |
kind language source |
註解會轉換成應用程式資訊或說明文件附註。 內容 kind 決定附註類型:documentation 和 appinfo。 內容 language 和 source 分別指定說明文件的自然語言和進一步說明文件的來源。 |
attribute | Property (of Class) |
form use |
此 UML 內容會轉換成複數類型中的屬性,如果內容的類型為簡式類型且對應關係為 [0..1],則會轉換成屬性群組中的屬性。 造型內容 form 決定在實例文件中是否必須定義屬性名稱。其值可以是 qualified 或 unqualified 或 default 其中之一。如果是 default,則值預設為 schema 的 attributeFormDefault, 預設值為 unqualified。 內容 use 決定該屬性是選用性的或必要的。值可以是 optional、prohibited 或 required。依預設,它的值是 optional。 在目前的實作中,已忽略值 prohibited。 |
attributeGroup | Class | 此類別轉換為屬性群組。 | |
complexType | Class |
anonymous block final modelGroup maxOccurs minOccurs mixed |
此類別轉換為複式類型。 內容 anonymous 決定是否在綱目中建立最上層複數類型宣告。其值可以是 True 或 False。如果是 True,則不會產生任何類型宣告,而且這個類別的任何參照都會轉換為屬性或使用匿名類型作為屬性或元素類型的元素宣告。依預設,值為 false。 內容 block 決定是否封鎖類型替代。它可以有下列值其中之一:#all 或 extension 或 restriction 或一份以空格區隔的 extension 和 restriction 的清單。值 #all 會防止任何衍生類型取代這個類型,extension 會防止這個類型的任何延伸取代這個類型,restriction 會防止這個類型的任何限制取代這個類型。清單 "extension restriction",和 #all 有相同的的效果。如果未指定 block 特性, 則值預設為 schema 的 blockDefault 特性。 內容 final 決定是否可從這個類型衍生出其他類型。其值可以是 #all 或是一份(extension 或 restriction)的清單。如果它的值是 #all,則不允許衍生任何類型。如需更明確的控制,值可以設為關鍵字 restriction 或 extension 。這個值是綱目的 finalDefault 之預設值。 內容 modelGroup 決定類型的內容模型。modelGroup 的值可以是 all 或 choice 或 sequence。預設值為 sequence。 限制: 如果 modelGroup 的值為 all, 則 anonymous 的值必須設為 false。 否則違反限制。 minOccurs 和 maxOccurs 的值決定 sequence 和 choice 群組在複數類型中出現的最小和最大次數。For an 以 all 模型群組而言,maxOccurs 必須為 1,minOccurs 只能為 0 或 1。 boolean 內容 mixed 指定複數類型是否容許混合內容。 依預設,值為 false。 |
element | Property (of Class) |
block final 表單 nillable |
這個內容會轉換為元素 內容 final 只能套用至廣域元素,不能套用至區域元素。此內容決定是否可從這個類型衍生出其他類型。其值可以是 #all 或是一份 (extension | restriction) 的清單。如果它的值是 #all,則不允許衍生任何類型。如需更明確的控制,值可以設為關鍵字 restriction 或 extension 。 這個值是綱目的 finalDefault 之預設值。 stereotype 內容 form 決定實例文件中是否必須完整的元素名稱。 其值可以是 qualified 或 unqualified 或 default 其中之一。 如果是 default, 則值會預設為 schema 的 elementFormDefault, 預設值為 unqualified。 boolean 內容 nillable 決定此元素的實例中是否可以使用 xsi:nil。 依預設,值為 false。 |
enumeration | Class | anonymous |
如果類別和另一個代表簡式類型的類別有一般化關係,則此類別會轉換為 XSD 列舉。 內容 anonymous 決定是否在綱目中建立具有列舉外觀 (facet) 的最上層簡式類型宣告。其值可以是 True 或 False。如果是 True,則不會產生任何類型宣告,而且這個類別的任何參照都會轉換為屬性或使用匿名類型作為屬性或元素類型的元素宣告。依預設,值為 false。 |
廣域 | Class | |
具有此造型的類別會轉換為最上層元素或屬性宣告。此類別必須只有一個內容。如果此內容有一個 <<attribute>> 造型或關鍵字,則類別會轉換為最上層屬性。否則,會變成最上層元素。 元素或屬性的名稱同於內容的名稱,且類型同於內容的類型。 |
listOf | Dependency | 相依關係的用戶端會轉換為 XSD 清單,而該清單的項目類型就是相依關係的供應者。如果兩個類別都代表簡式類型,那麼它們之間只能有一個此類的相依關係。 | |
modelGroup | Class |
anonymous modelGroup |
類別會轉換成具有 sequence 內容模型的可重覆使用的具名模型群組。 內容 anonymous 決定是否在綱目中建立最上層群組宣告。其值可以是 True 或 False。如果是 True,就不會產生任何群組宣告,而且此類別的全部參照都會轉換為巢狀模型群組。如果值為 False,類別的參照就會轉換為模型群組參照。依預設,值為 false。 內容 modelGroup 決定群組的內容模型。modelGroup 的值可以是 all 或 choice 或 sequence。預設值為 sequence。 限制 :如果 modelGroup 的值為 all, 則 anonymous 的值必須設為 false。 否則違反限制。 |
schema | Package |
attributeFormDefault blockDefault elementFormDefault finalDefault targetNamespace targetNamespacePrefix |
此套件和其內容會轉換為 XSD 綱目。套件的名稱會變成綱目(檔案)的名稱。 內容 attributeFormDefault 指定區域屬性宣告是否應該使用完整名稱。其值可以是 qualified 或 unqualified。 預設值為 unqualified。 內容 blockDefault 設定複數類型及元素宣告中使用的 block 屬性的預設值。 block 屬性決定是否封鎖元素替代或類型替代。可以有下列的值:#all 或(extension、 restriction 或 substitution)其中一或多個值的空格分隔清單。
內容 elementFormDefault
指定區域元素宣告是否應該使用完整名稱。其值可以是 qualified 或 unqualified。預設值為 unqualified。 內容 finalDefault 設定用於複數類型、簡式類型和元素宣告的 final 屬性之預設值。 final 屬性決定是否禁止類型衍生。 可以有下列的值:#all 或(extension、 restriction、substitution、 list 或 union)其中一或多個值的空格分隔清單。 如果您設定 targetNamespace 和 targetNamespacePrefix 的值, 這些值將置換您在相對應的轉換內容、目標名稱空間及目標名稱空間字首中分別設定的值。 |
simpleType | Class |
anonymous final fractionDigits length maxExclusive maxInclusive maxLength minExclusive minInclusive minLength pattern totalDigits whiteSpace |
如果類別與 XSD 內建資料類型、另一個簡式類型或 XSD 列舉類型之間具有一般化關係,此類別會轉換為簡式類型。 內容 anonymous 的值可以是 true 或 false。 如果是 True,此類別會被視為匿名類型,而且不會產生任何最上層類型宣告。 內容 final 決定是否可從這個類型衍生出其他類型。 值可以是 #all 或 (extension、 restriction、 list 或 union)清單。 如果它的值是 #all,則不允許衍生任何類型。如需更特定的控制,可將此值設定為 restriction、extension、list 或 union 任一關鍵字的以空格區隔之清單。 其他的內容代表由 XSD 綱目所定義的外觀 (facet)。您可以使用這些外觀來指定值的有效範圍、限制值的長度和精確度、指定有效值必須符合的正規表示式、或指定如何處理從內建 XSD 類型的限制所衍生的簡式類型中的空格。 如需詳細資料,請參閱表格外觀 (Facet) 的意義。 請注意,並非所有的外觀都適用於全部的簡式類型。例如,對於從 string、normalizedString 和 token 衍生的簡式類型,適用的外觀為 length、minLength、maxLength、pattern 和 whitespace。如需詳細資料,請參閱表格簡式類型和適用的外觀 (Facet)。 |
unionOf | Dependency | 相依關係的用戶端會轉換為 XSD 聯集,而該聯集的相依關係供應者就是其成員之一。代表簡式類型的類別對於不同的(簡式類型)類別可以有多個此類的相依關係。 | |
wildcard | Property (of Class) | processContents namespace |
此 UML 內容會轉換成元素萬用字元。如果內容除了有 wildcard 之外,還有關鍵字 attribute 或模板 <<attribute>>,則會轉換成屬性萬用字元。 內容 processContents 決定驗證取代屬性或元素的嚴格度。如果是 skip,綱目處理器就不會執行驗證。如果是 lax,綱目處理器會驗證找得到宣告的,或無效時會發生錯誤的屬性或元素。如果是 strict,綱目處理器會試圖尋找與名稱空間相關聯的綱目文件,並驗證所有的屬性或元素。依預設,值會設為 strict。 內容 namespace 指定取代屬性或元素可能在哪些名稱空間。 容許的值是下列:anyURI 或 ##targetNamespace 或 ##local 的 ##any、##other 清單的其中之一。如果是 ##any,取代元素或屬性可以在任何名稱空間,或不在名稱空間中。如果是 ##other,取代元素或屬性可以在除了文件的目標名稱空間以外的任何名稱空間中,但必須是在名稱空間中。如果綱目文件沒有目標名稱空間,取代元素或屬性可以有任何名稱空間,但必須只有一個。否則,它可以是以空白區隔的清單,其值包含任何或全部下列項目:##targetNamespace、#local 或特定的名稱空間。##targetNamespace 指出取代元素或屬性可能在綱目文件的目標名稱空間中,而 ##local 指出取代元素或屬性可能不在名稱空間中。 |
如果您建模的綱目不需要在小詳細資料中指定其元素,您可能會想要使用關鍵字來代替造型。下表說明「UML 至 XSD」轉換所支援的關鍵字。
關鍵字 | 適用的 UML 元素 | 註解 |
annotation | 註解 | 註解會轉換成 "appinfo" 或 "documentation" 附註。 |
attribute | Property (of Class) | 如果內容的對應關係是 [0..1],此內容會轉換成複數類型中的屬性。 |
attributeGroup | Class | 此類別轉換為屬性群組。 |
complexType | Class | 此類別轉換為複式類型。 |
element | Property | 此內容會轉換成複數類型的元素。 |
enumeration | Class | 如果類別和另一個代表簡式類型的類別有一般化關係,則此類別會轉換為 XSD 列舉。 |
global | Class |
具有此關鍵字的類別會轉換為最上層元素或屬性宣告。此類別必須只有一個內容。如果此內容有一個 <<attribute>> 造型或關鍵字 attribute,則類別會轉換為最上層屬性。否則,會變成最上層元素。 元素或屬性的名稱是衍生自內容的名稱,而類型則是衍生自內容的類型。 |
listOf | 代表兩個簡式類型的兩個類別之間的相依關係 | 相依關係的用戶端會轉換為 XSD 清單,而該清單的項目類型就是相依關係的供應者。如果兩個類別都代表簡式類型,那麼它們之間只能有一個此類的相依關係。 |
modelGroup | Class | 此類別會轉換為具有 sequence 內容模型的可重複使用之名稱模型群組。 |
schema | Package |
此套件和其內容會轉換為 XSD 綱目。套件的名稱會變成綱目(檔案)的名稱。 如果使用關鍵字 schema,則需要分別將轉換內容、目標名稱空間及目標名稱空間字首設為適當的值,以指定目標名稱空間和目標名稱空間字首。 |
simpleType | Class | 如果此類別與 XSD 內建資料類型或另一個簡式類型有一般化關係,則類別會轉換為簡式類型。 |
unionOf | 代表兩個簡式類型的兩個類別之間的相依關係 | 相依關係的用戶端會轉換為 XSD 聯集,而該聯集的相依關係供應者就是其成員之一。代表簡式類型的類別對於不同的(簡式類型)類別可以有多個此類的相依關係。 |
wildcard | Property |
此 UML 內容會轉換成元素萬用字元。如果內容除了有 wildcard 之外,還有關鍵字 attribute,則會轉換成屬性萬用字元。 |
「XML 綱目建議」中內建有四十四種簡式類型。這些簡式類型代表一般資料類型,例如字串、數字、日期與時間值,也包含 XML 1.0 中屬性類型的舊版類型。XSD 也提供十二種限制 Facet,可以用來指定簡式類型值的有效範圍、限制值的長度和精確度、 列舉有效值的清單,或指定有效值必須符合的正規表示式。
您可以將外觀 (facet) 設定為適當的值,來限制從內建類型或其他簡式類型衍生新的簡式類型。如果要採取這種方式,UML 模型中必須可以使用內建類型的表示法。
內建簡式類型被建模為類別,並在名稱為 XSDDataTypes 的模型程式庫中成為可用。 您需要在模型中匯入 XSDDataTypes 程式庫才能存取這些類型。若要匯入 XSDDataTypes 模型程式庫,請在「模型瀏覽器」中用滑鼠右鍵按一下模型的根(模型本身),選取匯入模型程式庫...,再從下拉清單選擇 XSDDataTypes。
若要定義新的簡式類型(使用者定義簡式類型),您需要特製化 XSDDataTypes 模型中的適當類別,並使用 <<simpleType>> 造型的內容來限制定義的類型值。例如:
您可以將 <<simpleType>> 的 maxInclusive 內容設為(假設) 100, 藉以將 Quantity 的最大值限制為 100。
在 UML 中建模 XML 綱目的目的是要建立 XML 綱目的視覺化表示法,然後使用「UML 至 XSD」轉換來產生綱目。根據分析顯示可以使用 UML 模型元素來代表 XML 綱目的最基本功能。下表顯示在 UML 呈現的概念和 XML 綱目定義 (XSD) 的相對應概念之間的對映子集。
UML 概念 | XML 綱目概念 |
Package | 具有字首的單一名稱空間 |
Class | 類型和可重複使用的群組
|
列舉 | 具有列舉 Facet 的 XSD 字串簡式類型的限制等同於 UML 列舉文字。 請注意,這不同於從 XSD 設定檔套用 <<enumeration>> 模板的 UML 類別。使用造型 UML 類別容許更多一般的 XSD 列舉。 |
類別的內容 | 元素和複數類型的屬性 |
關聯(聚集) | 內含元素(複數類型)的子元素 |
一般化 | 類型衍生
|
物件身分識別 | 使用者指定的鍵值欄位或明確的身分識別機制(尚未實作)。 |
UML 元素 | XSD 元素 | 註解 |
具有模板 <<schema>> 的套件 | 具有目標名稱空間和目標名稱空間字首的綱目 | 套件中的內容會製作 .xsd 檔案中的綱目。綱目檔的名稱和套件檔案的名稱相同。
<<schema>> 模板的內容 attributeFormDefault 和 elementFormDefault, 可以在產生的綱目上用來指定 attributeFormDefault 和 elementFormDefault 屬性。 如果使用關鍵字 schema 而非模板, 則必須分別設定 轉換內容、目標名稱空間及目標名稱空間字首的值,藉此提供目標名稱空間及其字首。 |
UML 元素 | XSD 元素 | 註解 |
具有造型 <<complexType>> 的類別 | 複數類型 | 如果造型內容 modelGroup 並未設定為下列可能的值之一:all、choice 或 sequence,則會產生具有 sequence 模型群組的複數類型。 |
具有關鍵字 complexType 的類別 | 複數類型 | 產生具有 sequence 模型群組的複數類型。 |
不具有關鍵字或造型的類別 | 複數類型 | 只有當轉換內容 Process unmarked class 設為 true 時,才會產生複數類型。 否則,將會忽略類別。如果產生複數類型,其模型群組會設為 sequence。 |
Property | 複數類型的元素 | |
具有 <<attribute>> 造型或關鍵字 attribute 的內容。 | 複數類型的屬性 |
只有內容的類型為簡式類型,而且對應關係為 [0..1] 時,內容才會轉換為屬性。否則會轉換成元素。 如果您提供預設值,該內容會轉換為具有預設值的選用性屬性。如果您使內容成為唯讀並提供預設值,則它會轉換成值固定為預設值的屬性。在這兩個例子中,您需要將內容的對應關係設定為 [0..1]。 您可以使用 <<attribute>> 造型的內容 use,來使屬性成為選用性的或必要的。如果將 use 的值設為 required, 且提供預設值並將內容設成唯讀,則會忽略指定的預設值和唯讀設定。 |
UML 元素 | XSD 元素 | 註解 |
具有模板 <<global>> 的類別, 或含有一個內容的關鍵字 "global"。 | 廣域(最上層)元素或屬性。 |
此類別必須只有一個內容。如果此內容有一個 <<attribute>> 造型或關鍵字 attribute,則類別會轉換為最上層屬性。否則會變成最上層元素。 元素或屬性的名稱是衍生自內容的名稱,而類型則是衍生自內容的類型。 |
UML 元素 | XSD 元素 | 註解 |
在已套用模板 <<global>> 的類別之間的一般化關係。 | 替代群組,由具有 <<global>> 模板的類別所代表的廣域元素組成。 | 若要組成廣域元素的替代群組,類型(類別)本身必須具有相等的一般化關係。 |
在下列範例中,廣域元素 dress 是替代群組的開頭,而廣域元素 shirt 和 trouser 是成員。
請注意,這些元素的類型具有一般化關係,此一般化關係等於廣域元素之間的一般化關係。
UML 元素 | XSD 元素 | 註解 |
具有造型 <<simpleType>> 或關鍵字 simpleType 的類別 |
使用者定義的簡式類型。 內建簡式類型或另一個使用者定義簡式類型的限制 |
內建簡式類型或另一個使用者定義列舉類型或 XSD 列舉類型必須有一般化關係。 |
UML 元素 | XSD 元素 | 註解 |
具有造型 <<enumeration>> 或關鍵字 enumeration 的類別 | XSD 列舉。 指定列舉 Facet 的簡式類型 |
內建簡式類型或另一個使用者定義簡式類型必須有一般化關係。 |
UML 元素 | XSD 元素 | 註解 |
UML 列舉 | XSD 列舉,具有限制基礎 xsd:string 和具有指定列舉外觀 (facet) 的簡式類型。 | 對任何其他簡式類型不需要任何一般化。 |
UML 元素 | XSD 元素 | 註解 |
具有造型 <<modelGroup>> 的類別 | 名稱模型群組 | 如果造型內容 modelGroup 並未設定為下列可能的值之一:all、choice 或 sequence,則會產生具有 sequence 模型群組的模型群組。 |
具有關鍵字 modelGroup 的類別 | 名稱模型群組 | 產生具有 sequence 模型群組的名稱模型群組。 |
具有造型 <<attributeGroup>> 或具有關鍵字 attributeGroup 的類別 | 屬性群組 | 提供可轉換為簡式類型且具有對應關係 [0..1] 的類型給類別的每一個內容,則其會轉換為屬性群組中的成員。否則,將會忽略內容。 因為內容只能轉換為 XSD 屬性,所以並不嚴格要求將造型 <<attribute>> 套用到內容中。不過,如果您想要為屬性指定其他內容(例如 required、form 等等),您需要套用 <<attribute>> 造型,並將造型的內容設為適當的值。 |
UML 元素 | XSD 元素 | 註解 |
類別 A 衍生自其他類別 B。 | 複數類型 B 是複數類型 A 的複式內容延伸。 |
類別 A 或類別 B 可以有模板 <<complexType>> 或關鍵字 complexType。 類別 A 和類別 B 兩者都不可以有 "all" 模型群組或內容模型。試圖延伸具有 "all" 模型群組的類別會造成違反限制。 類別 B 不能有造型 <<modelGroup>> 或 <<attributeGroup>>,也不能有關鍵字 modelGroup 或 attributeGroup。 也就是說,複數類型不能延伸模型群組或屬性群組。 |
類別 A 衍生自另一個具有 <<simpleType>> 模板或關鍵字 simpleType 的類別 B。 |
複數類型 B 是簡式類型的簡式內容延伸。類別 B 的任何內容會變成簡式內容延伸的屬性。 |
衍生自簡式類型的唯一目的是要新增屬性。因此,類別 B 的內容類型必須為簡式類型,且對應關係必須為 [0..1]。 否則,模型會違反限制。 |
UML 元素 | XSD 元素 | 註解 |
關聯(導向或複合聚集)類別 A -> 類別 B | 在複數類型 A 中類型為複數類型 B 的元素 | 元素名稱是由關聯端點的角色名稱所決定的。 |
UML 元素 | XSD 元素 | 註解 |
類別 A 包含一或多個類型為類別 B 的內容 | 在複數類型 A 中類型為複數類型 B 的元素 | 元素名稱是由內容的名稱所決定的。 |
UML 元素 | XSD 元素 | 註解 |
從類別 A 至具有 <<modelGroup>> 模板的類別 B 的關聯(導向關聯或複合聚集)。 類別 A -> 具有 <<attributeGroup>> 模板的類別 C。 |
複數類型 A 中的模型群組參照。 複數類型 A 中的屬性群組參照。 |
|
從具有 <<modelGroup>> 模板的類別 A 至也有 <<modelGroup>> 模板的類別 B 的關聯(導向關聯或複合聚集) | 類別 A 代表的模型群組中的模型群組參照 | |
從具有 <<attributeGroup>> 模板的類別 A 至也有 <<attributeGroup>> 模板的類別 B 的關聯(導向關聯或複合聚集) | 類別 A 代表的屬性群組中的屬性群組參照。 |
UML 元素 | XSD 元素 | 註解 |
在兩個簡式類型之間具有造型 <<listOf>> 或關鍵字 listOf 的相依關係 | 清單類型。 相依關係的用戶端會轉換為簡式類型,也就是一份相依關係供應者的清單 |
相依關係的用戶端和供應者都必須是簡式類型,而且兩者之間只可以有一個 <<listOf>> 相依關係。 這兩個類別之間不能有其他任何關係。 |
在用戶端簡式類型和一或多個供應者之間,具有造型 <<unionOf>> 或關鍵字 unionOf 的相依關係 | 聯集類型。
相依關係的用戶端會轉換為簡式類型,成為相依關係供應者的聯集。 |
相依關係的用戶端和供應者都必須是簡式類型,而且兩者之間可以有一或多個 <<unionOf>> 相依關係。在這些類別之間不應有其他任何關係。 |
UML 元素 | XSD 元素 | 註解 |
具有模板 <<complexType>> 和模板內容 anonymous = true 的類別 A, 且另一個代表複數類型的類別 B 參照此類別。 |
類別 A 會轉換成匿名複數類型。 此參照會轉換為複數類型(由類別 B 代表)的屬性或元素。元素或屬性的類型由這個匿名類型定義。 |
元素或屬性名稱由關聯端點的角色名稱或內容名稱來決定。 由於類別 A 指定為匿名,此類別不會產生最上層複數類型宣告。 |
UML 元素 | XSD 元素 | 註解 |
類別 A 具有造型 <<simpleType>> 和造型內容 anonymous = true,而且被另一個代表複數類型的類別 B 所參照 |
類別 A 會轉換成匿名簡式類型。 此參照會轉換為複數類型(由類別 B 代表)的屬性或元素。元素或屬性的類型由這個匿名類型定義。 |
元素或屬性名稱由關聯端點的角色名稱或內容名稱來決定。 由於類別 A 指定為匿名,此類別不會產生最上層簡式類型宣告。 |
UML 元素 | XSD 元素 | 註解 |
類別 A 具有造型 <<enumeration>> 和造型內容 anonymous = true,而且被另一個代表複數類型的類別 B 所參照 |
類別 A 會轉換成匿名列舉。 此參照會轉換為複數類型(由類別 B 代表)的屬性或元素。元素或屬性的類型由這個匿名類型定義。 |
元素或屬性名稱由關聯端點的角色名稱或內容名稱來決定。 由於類別 A 指定為匿名,此類別不會產生具有列舉 Facet 的最上層簡式類型宣告。 |
UML 元素 | XSD 元素 | 註解 |
類別 A 與具有模板 <<modelGroup>> 和內容值 anonymous = true 的類別 B 之間的關聯(導向或複合聚集)。 |
代表類別 A 的複數類型,包含類別 B 代表的具名模型群組的模型群組。 |
只有當 A 和 B 都沒有內容模型 all 時,這個對映才有效。 |
在具有造型 <<modelGroup>> 的類別 A 和具有造型 <<modelGroup>> 的類別 B 之間,且內容 anonymous 的值等於 true 的關聯(導向或複合聚集)。 | 代表類別 A 的名稱模型群組中包含代表類別 B 的名稱模型群組之模型群組。 | 只有當 A 和 B 都沒有內容模型 all 時,這個對映才有效。 |
上述模型群組的參照也可以使用類別內容來建立模型。
UML 元素 | XSD 元素 | 註解 |
類別 A 包含的內容之類型是具有造型 <<modelGroup>> 的類別 B,且內容 anonymous 的值等於 true。 | 代表類別 A 的複數類型中包含代表類別 B 的名稱模型群組之模型群組。 | 只有當 A 和 B 都沒有內容模型 all 時,這個對映才有效。 |
具有造型 <<modelGroup>> 的類別 A 包含的內容之類型是具有造型 <<modelGroup>> 的類別 B,且內容 anonymous 的值等於 true。 | 代表類別 A 的名稱模型群組中包含代表類別 B 的名稱模型群組之模型群組。 | 只有當 A 和 B 都沒有內容模型 all 時,這個對映才有效。 |
UML 元素 | XSD 元素 | 註解 |
類別 A 中包含具有 A 和 B 間的關聯之巢狀類別 B。 | 在複數類型 A 中具有匿名類型 B 的元素 |
巢狀外圍類別和巢狀類別之間必須有關聯。 如果類別 A 包含類型 B 的內容而非關聯,則會取得相同的綱目元件。 |
UML 元素 | XSD 元素 | 註解 |
類別 A 中包含具有造型 <<simpleType>> 或關鍵字 simpleType 的巢狀類別 B,而且在 A 和 B 之間有關聯。 | 在複數類型 A 中具有匿名簡式類型 B 的元素 |
巢狀外圍類別和巢狀類別之間必須有關聯。 如果類別 A 包含類型 B 的內容而非關聯,則會取得相同的綱目元件。 |
UML 元素 | XSD 元素 | 註解 |
註解 | 附註 | UML 元素中的註解會轉換成 XSD 說明文件附註。 |
具有 <<annotation>> 模板的註解 |
附註 | 附註的類型(documentation 或 appinfo ),
視 <<annotation>> 模板的 kind 內容而定。
如果 kind 的值為。如果 kind 的值為 documentation ,
則會建立 documentation 元素。
如果值為 applicationInfo ,則會建立 appinfo 元素。
kind 的預設值為 documentation 。 |
UML 元素 | XSD 元素 | 註解 |
具有模板 <<wildcard>> 或關鍵字 wildcard 的內容。 |
在含括複數類型或模型群組中的元素萬用字元 | 可能出現取代元素的名稱空間及驗證取代的嚴格程度,
由 <<wildcard>> 模板的內容
namespace 和 processContents 來決定。 |
UML 元素 | XSD 元素 | 註解 |
具有模板
<<attribute>> 和 <<wildcard>>
或關鍵字 attribute 和 wildcard 的內容。 |
在含括複數類型或屬性群組中的屬性萬用字元 | 可能出現取代屬性的名稱空間及驗證取代屬性的嚴格程度,
由 <<wildcard>> 模板的內容 namespace 和 processContents 來決定。
|
在 UML 中建模 XML 綱目的目的是要建立 XML 綱目的視覺化表示法,然後使用「UML 至 XSD」轉換來產生綱目。一般而言,在模型中會有代表 XSD 元素的元素,以及和 XSD 不相關的元素。 建議您在建置這種模型時牢記下列準則。
這項轉換尚未實作規則來產生下列 XSD 元素:
Facet | 意義 |
fractionDigits | 小數位數必須小於或等於 x |
length | 值的長度必須為 x |
maxExclusive | 值必須小於 x |
maxInclusive | 值必須小於或等於 x |
maxLength | 值的長度必須小於或等於 x |
minExclusive | 值必須大於 x |
minInclusive | 值必須大於或等於 x |
minLength | 值的長度必須大於或等於 x |
pattern | x 為值可能符合的其中一個正規表示式 |
totalDigits | 有效位數必須小於或等於 x |
whitespace | 綱目處理器應該保留、取代或收合空白,視 x 而定 |
下表列舉出內建資料類型和適用的外觀 (facet)。請注意,即使 W3C 中建議將 enumeration 指定為外觀 (facet),但本表中並未納入 enumeration。 我們以具有模板 <<enumeration>> 的類別或使用 UML 列舉來表示 enumeration。
資料類型(限制基礎) | 適用的 Facet |
ENTITY、ID、IDREF |
length、maxlength、minlength whitespace 固定為值 collapse pattern 為 [\i-[:]][\c-[:]]* |
IDREFS |
length、maxlength、pattern minlength 為 1 收合的值中空格是固定的 |
名稱 |
length、maxlength、minlength 收合空格 pattern 為 \i\c* |
NCName |
length、maxlength、minlength whitespace 為 collapse pattern 為 [\i-[:]][\c-[:]]* |
NMTOKEN |
length、maxlength、minlength whitespace 固定為值 collapse pattern 為 \c+ |
NMTOKENS |
length、maxlength minlength 為 1 whitespace 固定為值 collapse |
NOTATION |
length、maxlength、minlength、pattern 收合的值中空格是固定的 |
QNAME |
length、maxlength、minlength、pattern whitespace 固定為值 collapse |
anyURI、base64Binary、hexBinary |
length、maxlength、minlength、pattern whitespace 固定為值 collapse |
語言 |
length、maxlength、minlength 收合空格 pattern 為 ([a-zA-Z]{2}|[iI]-[a-zA-Z]+|[xX]-[a-zA-Z]{1,8})(-[a-zA-Z]{1,8})* |
float、double |
maxExclusive、maxInclusive、minExclusive、minExclusive、pattern whitespace 固定為值 collapse |
decimal | maxExclusive、maxInclusive、minExclusive、minExclusive、fractionDigits、totalDigits、pattern 空格是固定的,以取得收合值 |
整數資料類型 (integer、byte、int、long、negativeInteger、nonNegativeInteger、nonPositiveInteger、positiveInteger、unsignedByte、unsignedInt、unsignedLong、unsignedShort) |
maxExclusive、maxInclusive、minExclusive、minExclusive、totalDigits、pattern fractionDigits 是固定的,以取得值 0 whitespace 固定為值 collapse |
日期與時間的資料類型 (date、time、dateTime、gYear、gYearMonth、gMonth、gMonthDay、gDay、duration) |
maxExclusive、maxInclusive、minExclusive、minExclusive、pattern 空格是固定的,以取得收合值 |
string、normalizedString、token | length、maxLength、minLength、pattern whitespace 為 preserve 表示 string, replace 表示 normalizedString, collapse 表示 token |