scalaxb 0.5.0

  • 型クラスによって XML データバインディングを行うコードを xmlprotocol.scala という別のファイルに生成します.
  • ランタイムの package を org.scalaxb.rt から scalaxb という名前に変更して,また補助ファイルを scalaxb.scala という名前に変えました.
  • >22 のアイテムを含む <xs:all> の取り扱いを修正しました (GH-10).
  • >22 の属性を含む <xs:complexType> の取り扱いを修正しました (GH-11).
  • <xs:complexContent> を制限する <xs:simpleContent> を含んだ <xs:complexType> の取り扱いを修正しました (GH-12).
  • 生成されるコードの揺れを修正しました (GH-13).
  • XML データバインディングを行うコードを一つの trait にまとめることで循環 <xs:import> の取り扱いを修正しました (GH-14).
  • <xs:include> に指定されたスキーマがコンパイルに含まれていない場合に警告を出すようにしました (GH-15).

ご意見,バグレポートなどをくださった方に感謝の意を表したいと思います.特に Debasish Ghoshさんの記事からはプログラミングに関する洞察をいただき,Andreas Sewe さんからは上記の全てのバグ報告をいただき,ありがとうございました.

今回特に重要な変更点は XML データバインディングのコードが case class のコンパニオンオブジェクトから別の XMLProcotol という trait に抽出されたことです.これにより,使用コードは以下のようになります:

import scalaxb._
import Scalaxb._
import ipo._
import DefaultXMLProtocol._

val shipTo = fromXML[Address](<shipTo>
    <name>foo</name>
    <street>1537 Paper Street</street>
    <city>Wilmington</city>
  </shipTo>)

shipTo は以下の値なります:

Address("foo", "1537 Paper Street", "Wilmington")