<enumeration>
enumeration
(列挙)ファセットは単純型を具体的な値の集合へと限定します.例えば,アメリカの州の略称を値とするUSState
という新しい単純型をstring
から派生して定義するのにenumeration
ファセットを利用することができます:
<xsd:simpleType name="USState">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="AK"/>
<xsd:enumeration value="AL"/>
<xsd:enumeration value="AR"/>
<!-- and so on ... -->
</xsd:restriction>
</xsd:simpleType>
このような制限は case object を使って表現することができます.以下は scalaxb が生成するコードです:
trait USState object USState { def fromXML(seq: scala.xml.NodeSeq): USState = fromString(seq.text) def fromString(value: String): USState = value match { case "AK" => AK case "AL" => AL case "AR" => AR case "DE" => DE } } case object AK extends USState { override def toString = "AK" } case object AL extends USState { override def toString = "AL" } case object AR extends USState { override def toString = "AR" }