Search code examples
orbeonxforms

Can we apply AVT for attribute 'id' in Orbeon Xforms


Thanks to SO for letting me know about AVT in my previous question.

I thought AVT can be applied to all attributes, but i found that it is not working for attribute id. I read W3C recommendations and come to know that AVT cannot be applied to all attributes.

Please can some one let me know if this works with Orbeon Xforms.

Sample Code(Play it in Sandbox!):

<xhtml:html xmlns:xhtml="http://www.w3.org/1999/xhtml"
    xmlns:odt="http://orbeon.org/oxf/xml/datatypes"
    xmlns:xi="http://www.w3.org/2001/XInclude"
    xmlns:sql="http://orbeon.org/oxf/xml/sql"
    xmlns:xxi="http://orbeon.org/oxf/xml/xinclude"
    xmlns:p="http://www.orbeon.com/oxf/pipeline"
    xmlns:saxon="http://saxon.sf.net/"
    xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:oxf="http://www.orbeon.com/oxf/processors"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:xxforms="http://orbeon.org/oxf/xml/xforms"
    xmlns:exforms="http://www.exforms.org/exf/1-0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:fr="http://orbeon.org/oxf/xml/form-runner"
    xmlns:ev="http://www.w3.org/2001/xml-events"
    xmlns:pipeline="java:org.orbeon.oxf.processor.pipeline.PipelineFunctionLibrary"
    xmlns:f="http://orbeon.org/oxf/xml/formatting"
    xmlns:xforms="http://www.w3.org/2002/xforms"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:exf="http://www.exforms.org/exf/1-0"
    xmlns:xbl="http://www.w3.org/ns/xbl"
    xmlns:date="http://exslt.org/dates-and-times">

<xhtml:head>
  <xhtml:title>Address Details</xhtml:title>

  <xforms:model>
     <xforms:instance id="address-details" xmlns="">
        <form>
            <address>
                <address-1></address-1>
            </address>
        </form>
     </xforms:instance>

    <xforms:bind id="address-1" nodeset="instance('address-details')/address/address-1" 
                readonly="false()"
                constraint="string-length(.) &lt;= 15"/>
    <xxforms:variable name="id-name" select="CONTROL-ID" />

  </xforms:model>
</xhtml:head>

<xhtml:body>

    <table>
        <tr>
            <td>
                Address 1:
            </td>
            <td>
                <xforms:input bind="address-1" incremental="true" id="{$id-name}">
                    <xforms:alert>Maximum allowed characters are 15</xforms:alert>
                </xforms:input>
            </td>
        </tr>
    </table>

</xhtml:body>

</xhtml:html>

We can see the HTML source which shows that the AVT is not interpreted.

AVT not interpreted for id attribute

I know that the form runner appends a dynamic name to the id value, but thats fine for me.

Please can some one let me know if this works with Orbeon Xforms or not.


Solution

  • Simple answer: AVTs don't work on the id attribute of XForms elements. You have to pick an id statically.