Note that the Xdefinition in the example below has the attributes "name" and "root" (see line 1). The attribute "root" specifies which model (or models) from the Xdefinition can be used as the root elements of the input data. The attribute "name" contains the name of Xdefinition (it is required if the project is composed from more Xdefinitions). Note also that the element "xd:declaration" has the attribute scope="global", which specifies that the contents of the declaration are "visible" from all Xdefinitions (the attribute is optional and the default value is "local" - i.e. the declaration is visibble only from the this Xdefinition).
<xd:def xmlns:xd="http://www.xdef.org/xdef/4.2" name="Example" root="Inventory" > <xd:declaration scope="global"> void message(String s) { outln(s); } int count = 0; type isbn int(10000000, 999999999); </xd:declaration> <Inventory xd:script="init message('Created ' + now()); finally message('Processed ' + count + ' books');"> <Book xd:script="occurs +; onAbsence error('No books!'); finally {count++; outln('ISBN code: " ' + @ISBN)};" ISBN="isbn;" published="optional gYear();" > <Author xd:script="occurs *" > string() </Author> <Title> string(); </Title> </Book> </Inventory> </xd:def>You can try it HERE