XForms规范是 XML [XML 1.0]的应用并且被设计用来和XML的其他应用特别是XHTML [XHTML 1.0]一起使用。本章讨论了本规范定义的XForms的结构。
XForms命名空间的地址为http://www.w3.org/2002/01/xforms,尽管XForms的推荐标准定义了最终标识,但将来的草案可能使用新的地址。
XForms处理器必须使用XML命名空间机制[XML Names] 来识别Xforms命名空间定义的元素和属性。
本规范定义的每个元素都具有类型为xsd:ID 的id属性,允许元素通过属性xsd:idref引用。
XForms处理器必须忽略不识别的外部元素或属性。
本节描述了XForms元素model作为定义XForms模型的元素容器,一个页面可以包含一个或多个model元素,model 定义了XForms文档绑定用户交互的基本模型,因此,model元素要出现在用户交互标记之前model元素的内容不在页面上表,例如:model元素出现在 XHTML 的html:head 元素内,而XForms用户界面标记出现在元素html:body内。
XML表述: <model>
<model
extensionFunctions = list of QNames
>
<!-- Content: instance?, schema?, (privacy|submitInfo|bind|action|extension)* -->
</model>
extensionFunctions - 可选,XForms模型使用的XPath扩展列表,使用未定义扩展函数将发生错误。
元素model可以包含下列元素:
实例(Instance)
定义基本实例以及初始数据—见 3.4 实例(instance)。
架构(Schema)
定义实例的架构—见 3.5 架构(schema)
提交信息(submitInfo)
保存提交的详细信息—见3.6 提交信息(submitInfo)
绑定(Bindings)
元素bind指定一个或多个定义 XForms 模型项目约束的绑定—见6 约束(Constraints)。
隐私策略(Privacy)
基于P3P的隐私策略—见 3.7隐私策略(privacy)
行为(Action)
事件处理—见 10.16 行为(action),允许处理事件model的相关事件—见 4 处理模型.
扩展(Extension)
扩充的元素—见 8.12.4.5 扩展(extension)
范例: Model
<model xmlns="http://www.w3.org/2002/01/xforms" id="Person">
<instance xlink:href="http://example.com/cgi-bin/get-instance" />
<schema xlink:href="Schema-Questionnaire.xsd" />
...
</model>
元素instance 包含基本的提供初始实例数据的实例文档,实例数据可以内联或使用外部资源。
XML 表述: <instance>
<instance xlink:href = xsd:anyURI >
<!-- Content: (##any) -->
</instance>
xlink:href - 可选 指向定义在外部的实例数据。
元素instance 的内容可以是由任意命名空间定义的XML元素,包含处理过的不可见数据,必须保证使用正确定义的命名空间。
元素schema包含实例定义架构,架构可以内联或使用外部资源。
XML 表述: <schema>
<schema xlink:href = xsd:anyURI >
<!-- Content: ##other (though typically <xsd:schema>) -->
</schema>
xlink:href -可选 指向定义在外部的实例数据。
元素submitInfo定义如何提交、提交到哪里及提交什么。
XML表述: <submitInfo>
<submitInfo
(single node binding attributes)
action = xsd:anyURI
mediaTypeExtension = "none" | qname-but-not-ncname : "none"
method = "post" | "get" | qname-but-not-ncname : "post"
version = xsd:NMTOKEN
indent = xsd:boolean
encoding = xsd:string
mediaType = xsd:string
omitXMLDeclaration = xsd:boolean
standalone = xsd:boolean
CDATASectionElements = list of xsd:QName
replace = "all" | "instance" | "none" | qname-but-not-ncname : "all"
>
<!-- Content: XForms动作 -->
</submitInfo>
single node binding attributes - 可选 选择提交部分数据。action - 必需 提交实例数据的目标地址。mediaTypeExtension - 可选 描述信息存储格式,mediaType附属。method - 可选 描述提交数据的传输协议。version - 对应 xsl:output 的version 属性indent -对应 xsl:output 的indent属性encoding -对应 xsl:output 的encoding属性mediaType -对应 xsl:output 的media-type属性omitXMLDeclaration -对应 xsl:output 的omit-xml-declaration属性standalone -对应 xsl:output 的standalone属性CDATASectionElements -对应 xsl:output 的cdata-section-elements属性replace – 定义针对返回信息的操作
注:很多属性对应XSLT 属性 [XSLT]; 不支持XSLT 的doctype-system 和 doctype-public属性。
注: 当媒体类型不确定时mediaTypeExtension属性很有用,如: a SOAP envelope 不能被"text/xml"简单描述,需要附加信息。
元素privacy 用于表述特定表单涉及的 P3P [P3P 1.0]策略。
XML表述: <privacy>
<privacy
xlink:href = xsd:anyURI
>
<!-- Content: (##empty) -->
</privacy>
xlink:href - 可选 指向外部定义的 P3P 策略参考文件 ( 非实际策略 ) 。