# XForms/Benefits
## Why XForms?

There are many benefits to using XForms over traditional HTML forms. Some of the most frequently mentioned benefits are:

## Benefits of XForms

* Web Standard - XForms is a W3C standard and allows web applications to be created without lockin to any specific vendor such as Microsoft, Adobe or Apple
* Consistency with Other Standards - XForms was designed to be very consistent with other web standards such as CSS, XML Schema and XPath. If you know CSS then you can quickly learn how to style your XForms.
* Declarative - XForms is considered a declarative system in that it allows users to declare what they want the forms to do, not how to do it. Movement away from highly complex and primitive procedural JavaScript to advanced declarative styles is the principal way that non-programmers can participate in the forms development process.
* Less JavaScript - XForms allows the movement away from hard-to-maintain, difficult to debug and potentially insecure JavaScript
* Fewer "round trips" of pages being transferred from web server to web browser. This means that fewer web servers are needed in your DMZ and smaller bandwidth is needed between the client and the servers
* Clean and consistent use of MVC architectures
* Forms are easier to create, debug and maintain
* Forms can accommodate multiple languages and multiple currencies
* Forms have clear Separation of Concerns, meaning all your forms can share a common style sheet, model, bindings and presentation.
* Advanced user interface controls such as the XForms/Range control
* Extensibility of XForms (see XForms/Custom Controls)
* Allows the designer to focus on concrete business models and abstract user interfaces (attributed to Joern Turner)
The last point is very critical since business models are designed to be consistent with the business area that tend to be more constant over time. User interface technology on the other hand changes rapidly and must be highly contextual to a browser, browser version mobile device or tablet. This core philosophy of Separation of Concerns is one of the key elements to the philosophy of XForms and good human-machine interactions.

## Disadvantages of XForms

Just to be fair, we should also mention the disadvantages. Most of these problems are related to the newness of XForms and will be mitigated over time:
* Web browser limitations have made it difficult for XForms tools vendors to support all XForms tags in all browsers
* Slow performance on very-large forms - forms with over 200 fields sometimes can be slow to load on some older browsers
* Using non-native browser forms players such as XSLTForms require an initial download of around 100K of JavaScript, CSS and XSL files that can be slow, especially over slower dial-up lines. Note that these files are usually cached on the local hard drive so that the second time a form package is used the files do not have to be re-downloaded.
* Lack of understanding of XML - Many traditional HTML/JavaScript forms developers are not familiar with XML standards
* Few complete working XForms examples and applications exist (a problem which we are trying to correct with this book)
* Few high-quality and low-cost GUI forms builder tools exist today (with the exception of IBM's Workplace forms, OpenOffice Forms, Onyx Forms and few other tools)
You will note that most of the disadvantages of XForms are related to limitations of XForms clients, current browser shortcomings, or skills and training issues. There are few fundamental architectural disadvantages with XForms.

## Analysis of XForms Nay-sayers

When there is negative discussion about XForms we have found that most of the negative comments about XForms usually comes from people with one or more of the following attributes:
* They don't understand the role that standards play in lowering the cost of software development
* They are trying to promote a vendor-specific proprietary technology
* They have very little actual real-world XForms experience or have not had strong mentorship by an experienced XForms consultant
* They do not appreciate the architectural advantages of MVC-based systems and the use of dependency graphs
* They are focused on the limitations of one or more specific browsers or XForms products
* They are comparing XForms with a problem domain outside of the scope of XForms charter such as graphics or complex navigation controls