2006年 9月 29日 金曜日 |
XMLスキーマのデザインパターン English Translation: (Yahoo!) / (Google)
8月ごろの記事ですがSun Developer Network(SDN)でIntroducing Design Patterns in XML Schemasという記事が公開されています。
まず簡単に上記の記事で紹介されているXMLSchemaデザインパターンを紹介しておきます。デザイン・パターンには次の4つがあります。
Russian Doll(マトリョーシカ) パターン入れ子人形で知られるマトリョーシカのように、全てのエレメントと複合型が一つのエレメントの中に入れ子になった形で定義されているようなスキーマです。イメージとしてはこんな感じ。
<xsd:element name="Line">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="PointA">
<xsd:complexType>
<xsd:attribute name="x" type="xsd:integer"/>
<xsd:attribute name="y" type="xsd:integer"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="PointB">
<xsd:complexType>
<xsd:attribute name="x" type="xsd:integer"/>
<xsd:attribute name="y" type="xsd:integer"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
エレメント、複合型がまとめて入れ子に定義されています。ぜんぶ一まとめでわかりやすいのですが、再利用をしようとするときには全て使うか、すべて使わないかのどちらかしか選べません。
Salami Slice (サラミ・スライス) パターンすべてのエレメントがグローバルに定義されているようなスキーマです。 イメージとしてはこんな感じ。
<xsd:element name="PointA">
<xsd:complexType>
<xsd:attribute name="x" type="xsd:integer"/>
<xsd:attribute name="y" type="xsd:integer"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="PointB">
<xsd:complexType>
<xsd:attribute name="x" type="xsd:integer"/>
<xsd:attribute name="y" type="xsd:integer"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Line">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="PointA"/>
<xsd:element ref="PointB"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
すべてのエレメントが再利用しやすい形ですが、どこがルートなのかパッと見ただけでは良くわからないかもしれません。
Venetian Blind (ベネチア風の日よけ) パターンこのパターンはマトリョーシカ・パターンの特徴を受け継いでいます。違いは中に含まれているエレメントの型をグローバルに定義しているところです。イメージとしてはこんな感じ。
<xsd:complexType name="PointType">
<xsd:attribute name="x" type="xsd:integer"/>
<xsd:attribute name="y" type="xsd:integer"/>
</xsd:complexType>
<xsd:element name="Line">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="PointA" type="PointType"/>
<xsd:element name="PointB" type="PointType"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
Garden of Eden (エデンの園) パターンベネチア風の日よけパターンとサラミスライス・パターンを混ぜたような感じのパターンです。すべてのエレメントと型は別々に定義されます。
<xsd:complexType name="PointType">
<xsd:attribute name="x" type="xsd:integer"/>
<xsd:attribute name="y" type="xsd:integer"/>
</xsd:complexType>
<xsd:complexType name="LineType">
<xsd:sequence>
<xsd:element ref="PointA"/>
<xsd:element ref="PointB"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="PointA" type="PointType"/>
<xsd:element name="PointB" type="PointType"/>
<xsd:element name="Line" type="LineType"/>
細かく再利用できそうですが、細かすぎてわかりにくいかもしれません。
NetBeans Enterprise PackのXMLSchemaエディタ
NetBeans Enterprise PackにはXMLSchemaエディタが含まれているのですが、上記で紹介したXMLSchemaデザインパターンを適用する、いわばXMLSchema版のリファクタリング機能がついています。
無料セミナー: 10月13日(金) SOAの概要からSun Java CAPSの活用まで English Translation: (Yahoo!) / (Google)
10月13日(金)にサンの用賀本社にて「Sun Java Composite Application Platform Suites活用セミナー」というセミナーを行うそうです。このセミナーは輪島さんによるSOAの概要から順番に紹介されますので、まだSOAについて具体的なイメージがない方でも気軽に参加できると思います。 なおセミナーは無料ですが、事前登録制となっていますのでご興味のある方はお早めに登録されることをお勧めいたします。 |
Today's Page Hits: 751 |