Using and extending XForms-Schema.xsd

We have a forms application in which our forms are defined using
XForms hosted in proprietary xml document (these are then converted
via XSLT to XHTML+XForms documents which are passed to the XForms
engine).

I've been trying to integrate our inhouse proprietary form schema
(which isn't particularly complex - primarily it's just a platform
independent container document for the XForms markup) with the
XForms-Schema.xsd defined as part of the spec
(http://www.w3.org/MarkUp/Forms/2002/XForms-Schema.xsd).

One extension we have is that some extra tags are present inside
xforms elements, for example a group can have a 'layout' metadata tag
(from our own namespace), which affects the XHTML generated from the
form definition (because we wanted more precise control than the
minimal, compact & full appearance hints)

<xforms:group bind="bind-name">
   <layout:vertical-layout/>
   <xforms:input bind="bind-firstname">
       <xforms:label>First Name</xforms:label>
   </xforms:input>
   <xforms:input bind="bind-lastname">
       <xforms:label>Last Name</xforms:label>
   </xforms:input>
</xforms:group>

My schema knowledge is fairly basic, but my first instinct here was to
look for a way to extend the XForms group type to allow a 'layout' tag
to be added. As far as I could tell though, there is no such type
declared (in fact there are no complexTypes declared at all), only a
top level group element which isn't available for extension:

   <xsd:element name="group">
       <xsd:complexType>
           <xsd:sequence>
               <xsd:element ref="xforms:label" minOccurs="0"/>
               <xsd:sequence minOccurs="0" maxOccurs="unbounded">
                   <xsd:choice>
                       <xsd:group ref="xforms:UI.Common"/>
                       <xsd:group ref="xforms:Form.Controls"/>
                       <xsd:element ref="xforms:group"/>
                       <xsd:element ref="xforms:switch"/>
                       <xsd:element ref="xforms:repeat"/>
                       <!-- containing document language to add
additional allowed content here -->
                   </xsd:choice>
               </xsd:sequence>
           </xsd:sequence>
           <xsd:attributeGroup ref="xforms:Common.Attributes"/>
           <xsd:attributeGroup ref="xforms:Single.Node.Binding.Attributes"/>
           <xsd:attributeGroup ref="xforms:UI.Common.Attrs"/>
       </xsd:complexType>
   </xsd:element>

Note the comment 'containing document language to add additional
allowed content here' - precisely what I want to do, but am I expected
to actually maintain and edit a local copy of this schema to do this?
Certainly that's easy enough, especially since I expect the public
version will be slow to change, but surely the preferred method would
be to extend, rather than directly modify?

Adrian

Received on Tuesday, 19 July 2005 23:30:16 UTC