掲示板一覧   -   トピック一覧
   Enterprise Architect 全般
     xs:complexType と xs:element


スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 トピック
未登録ゲスト
投稿日時: 2006-6-27 14:05

xs:complexType と xs:element

こんにちは.

Class 図から XML Schema を生成する時,トップレベルに配置した<<XSDcomplexType>> は,xs:complexType のほかに,必ず対となる同名の xs:element を生成します.

この振る舞いを制御する方法はありますでしょうか?
具体的には,以下の二つを行いたいです.
1) 生成される xs:complexType と xs:element の名称を別のものとしたい.
2) xs:complexType のみ生成し,xs:element は生成しない.

以上,よろしくお願いいたします.
tkouno
投稿日時: 2006-6-27 14:31
EA Administrator
投稿: 3939

Re: xs:complexType と xs:element

ご指摘の件は、現在のEnterprise Architectの正しい挙動です。


Enterprise Architectでは、XMLの生成ルールとして
「Garden of Eden」と呼ばれているルールを採用しています。

このキーワードで検索したら、以下のWikipediaの記事が見つかりました。ぜひご覧ください。http://ja.wikipedia.org/wiki/Universal_Business_Language


現在のところはこの挙動を制御する方法はありません。
機能追加要望として検討させていただきます。

ご迷惑をおかけし申し訳ございませんが
不要な際には逐次削除をお願いします。

ご期待に沿えず申し訳ございません。

未登録ゲスト
投稿日時: 2006-6-27 15:00

Re: xs:complexType と xs:element

ご返信,ありがとうございます.
当方,XML Schema については勉強を始めたばかりで,「Garden of Eden」というルールは知りませんでした.

以下,EA とは直接関係無いので質問には書かなかったのですが,現在,EA で生成された XML Schema を JAXB を用いて java に binding しようとしています.
JAXB を用いて schema compling を行うと,element と complexType の名称が等しいために,class 名の conflict が起こってしまいます.
そこで,質問したように EA で生成する XML Schema をコントロールできないかと考えました.
しかし,EA が生成するコードが有名(?)な XML Schema の記法に従っているのであれば,それを JAXB で扱う方法が有るかも知れませんね.
もう少し調べてみようと思います.

ありがとうございました.
tkouno
投稿日時: 2006-6-27 15:09
EA Administrator
投稿: 3939

Re: xs:complexType と xs:element

このルールにつきましては当方も不勉強で詳細までは
存じておらず、有名なのかもちょっとわかりません。

現在の生成のルールとして、比較的要望の多いルールで
実装されているだけとお考えください。


その上で、XSLTなどでうまく変換できるようであれば
そのほうが早いのかもしれません。

ぜひお試しください。


tkouno
投稿日時: 2006-12-19 12:51
EA Administrator
投稿: 3939

Re: xs:complexType と xs:element

こちらの件ですが、最新版ビルド801では
以下の方法で対応が可能です。

ぜひお試しください。

1. ツールボックスのXMLスキーマグループから「Element」要素を
  ダイアグラム内にドロップする
2. ドロップするとダイアログが表示されるので、中央付近にある
「Nested complex Type」にチェックを入れる
3. XSDtopLevelElementおよびXSDComplexType要素が生成される

この状態でXMLスキーマを生成すると、ご希望通りの結果となります。
tkouno
投稿日時: 2006-12-19 16:20
EA Administrator
投稿: 3939

Re: xs:complexType と xs:element

追記:
既存のElement要素を変更する場合の手順は
次のとおりです。


1. <<XSDtopLevelElement>>ステレオタイプがついている要素の
  親の分類子を削除する
  (要素を選択した状態で、メインメニューから「要素」→「追加設定」→
  「親クラスとインターフェースの指定」を実行し、表示されるダイアログの
  中の一覧の項目を全て削除する)

2. プロジェクトブラウザで、対象のComplexType要素を、1番の要素の
下に移動する

3. XSDを生成する
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ