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 {
      …
   }
}