2011年11月10日木曜日

WSDL2Ws Tool で再チャレンジ

WSDL2C で変換に失敗したスキーマを WSDL2Ws で再チャレンジ。結果は、やっぱりダメでしたが、まだ、こちらの方が希望が持てた。

 WSDL2Ws.java 中に以下のコメントが残されていたからだ…。
  //TODO the code require the attributes name at extension base types
  //different, the WSDL2Ws do not support it having same name at up and below.

  // The names of the inherited parms are mangled
  // in case they interfere with local parms.
  // String mangle = "";
  //if (i > 0) {
  // mangle = "_" +
  //  Utils.xmlNameToJava(te.getQName().getLocalPart()) +
  //  "_";
  //}


 ひっかかっているのは、xsd ファイル中の以下のような定義だ

   <xsd:element name="Add" type="ogc:BinaryOperatorType"
      substitutionGroup="ogc:expression"/>
   <xsd:element name="Sub" type="ogc:BinaryOperatorType"
      substitutionGroup="ogc:expression"/>
   <xsd:element name="Mul" type="ogc:BinaryOperatorType"
      substitutionGroup="ogc:expression"/>
   <xsd:element name="Div" type="ogc:BinaryOperatorType"
      substitutionGroup="ogc:expression"/>
   <xsd:element name="PropertyName" type="ogc:PropertyNameType"
      substitutionGroup="ogc:expression"/>
   <xsd:element name="Function" type="ogc:FunctionType"
      substitutionGroup="ogc:expression"/>
   <xsd:element name="Literal" type="ogc:LiteralType"
      substitutionGroup="ogc:expression"/>

まさに、type 属性が同じだけど、name 属性が異なるってやつだ。
はて、どうしたものか…。こいつら、大抵 enum で置き換えれそうだが、ソース吐き出すところまで全般に渡って手を入れないとダメそうだ…。とりあえず、スキーマを simpleType に置き換えて、後から enum にセコセコ修正する感じで逃げちゃうか?

0 件のコメント: