</book> </books> </xforms:instance> <xforms:bind nodeset="instance('books-instance')/book"> <xforms:bind nodeset="title" required="true()"/> </xforms:bind> <xforms:instance id="errors-instance"> <errors xmlns=""/> </xforms:instance> <xforms:instance id="error-template"> <error xmlns="" id="" indexes="" label="" alert=""/> </xforms:instance> </xforms:model> </head> <body> <xforms:action ev:event="xforms-invalid" if="normalize-space(event('alert')) != ''"> <xforms:action if="not(instance('errors-instance')/error[@id = event('target') and @indexes = string-join(event('repeat-indexes'), '-')])"> <xforms:insert context="instance('errors-instance')" nodeset="error" origin="instance('error-template')"/> <xforms:setvalue ref="instance('errors-instance')/error[index('errors-repeat')]/@id" value="event('target')"/> <xforms:setvalue ref="instance('errors-instance')/error[index('errors-repeat')]/@indexes" value="string-join(event('repeat-indexes'), '-')"/> </xforms:action> <xforms:setvalue ref="instance('errors-instance')/error[@id = event('target') and @indexes = string-join(event('repeat-indexes'), '-')]/@alert" value="event('alert')"/> <xforms:setvalue ref="instance('errors-instance')/error[@id = event('target') and @indexes = string-join(event('repeat-indexes'), '-')]/@label" value="event('label')"/> </xforms:action> <xforms:action ev:event="xforms-valid" if="instance('errors-instance')/error[@id = event('target') and @indexes = string-join(event('repeat-indexes'), '-')]"> <xforms:delete nodeset="instance('errors-instance')/error[@id = event('target') and @indexes = string-join(event('repeat-indexes'), '-')]"/> </xforms:action> <xforms:group ref="instance('books-instance')/book/title"> <table class="dmv-errors-table"> <xforms:repeat nodeset="instance('errors-instance')/error" id="errors-repeat"> <tr> <th><xforms:output value="@label"/></th> <td> <xforms:output value="if (string-length(@indexes) > 0) then concat('(Row ', @indexes, ')') else ''"/> </td> <td><xforms:output value="@alert"/></td> </tr> </xforms:repeat> </table> <xforms:input ref="."> <xforms:label class="profile-label">Title: </xforms:label> <xforms:hint>Compulsory</xforms:hint> <xforms:alert>The title is required</xforms:alert> </xforms:input> </xforms:group> <widget:xforms-instance-inspector xmlns:widget="http://orbeon.org/oxf/xml/widget"/> </body> </html>