Serialisation formとしてのXMLとADL、2段階モデリング
Technical documentation
2012/04/02
元ネタは,"RugsOn":http://www.rugson.org/ から。
Starbacksのオーダーはいろんな飲み物メニューに様々なオプションを追加することができる。
価格やサイズ、そしてオプションについての情報を含めると、構造化したデータでやりとりをする必要がある。
Starbacksでカフェフラペチーノをオーダーしたとすると,オーダー情報は以下のようなXMLデータとして表記されるようなものになる。
<?xml version="1.0" encoding="UTF-8"?>
 
  Grande
  Coffee Frapecino
  Sep 12, 2011
  460
  
   Shot
   Extra whip
   Hazelnut
   Caramel sauce
   Chocolate sauce
   Chocolate chip
  
 
対応するW3Cスキーマはこうなるんじゃないかな。
<?xml version="1.0" encoding="UTF-8"?>
  
    xs:complexType
      xs:sequence
        
        
        
        
        
      /xs:sequence
    /xs:complexType
  /xs:element
  
  
  
  
  
    xs:complexType
      xs:sequence
        
      /xs:sequence
    /xs:complexType
  /xs:element
  
    
      
    /xs:complexType
  /xs:element
/xs:schema
このXMLスキーマをADLでarchetypeとして表現するとこうなる。
archetype
    STARBUCKS-ORDER-CLUSTER.starbucks_order.v1
concept
    [at0000]  -- Starbucks coffee order
language
    original_language = <[ISO_639-1::en]>
description
    original_author = <
        ["name"] = <"Starbucks Coffee, ltd">
    >
    details = <
        ["en"] = <
              language = <[ISO_639-1::en]>
              purpose = <"To operate Starbucks orders">
              use = <"Record Starbucks order">
              misuse = <"Record McDonald order">
              copyright = <"">
        >
    >
    lifecycle_state = <"Draft">
    other_contributors = <"">
definition
    CLUSTER[at0000] matches {
        items cardinality matches {1..*; unordered} matches {
            ELEMENT[at0001]