Restrizione di tipo complesso
Lo XOM considera le restrizioni di tipo complesso nello XOM.
Nel seguente esempio, il tipo complesso book rappresenta un libro standard e il tipo complesso old-book è una restrizione perché è stato aggiunto un vincolo di modello lessicale (pattern
value ="[0-9]{2}-[A-Z]{5}-[0-9]"). L'esempio include una regola denominata processOldBook che corrisponde a "Hamlet" con il titolo di un oggetto OldBook .
Nota:
La classe dinamica OldBook non ridefinisce né limita gli attributi della classe Book , anche se il campo ident è più ristretto.
Ecco lo schema:
<complexType name= "book">
<sequence>
<element name="ident" type="string"/>
<element name="title" type="string" />
</sequence>
</complexType>
<complexType name="old-book">
<complexContent>
<restriction base="book">
<sequence>
<element name="ident">
<simpleType>
<restriction base="string">
<pattern value="[0-9]{2}-[A-Z]{5}-[0-9]">
</restriction>
</simpleType>
</element>
</sequence>
</restriction>
</complexContent>
</complexType>
Ecco la rappresentazione XOM:
class Book extends IlrXmlObject
{
…
String ident;
String title;
…
}
class OldBook extends Book
{
…
}
Ed ecco la regola:
rule processOldBook
{
when {
OldBook ( title equals "Hamlet" );
}
then {
…
}
}