我正在尝试使用xForms:input,但它们不会在浏览器中显示。 这是我的xhtml代码:
<?xml-model href="http://www.oxygenxml.com/1999/xhtml/xhtml-xforms.nvdl"
schematypens="http://purl.oclc.org/dsdl/nvdl/ns/structure/1.0"?>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:xforms="http://www.w3.org/2002/xforms"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<meta:meta xmlns:meta="http://www.xsmiles.org/2002/metadata"
name="XForms Controls"
description="Tests all XForms controls in single document"/>
<head>
<title>Registo de Utilizador</title>
<xforms:model id="modelUtilizador">
<xforms:instance
id="instanceUtilizador"
src="http://localhost:8081/exist/apps/PEIFinal/data/utilizadores.xml"/>
<xforms:bind id="nome" nodeset="//utilizador/nome" type="xsd:string" required="true()"/>
<xforms:bind id="sexo" nodeset="//utilizador/sexo" type="xsd:string"/>
<xforms:bind id="rua" nodeset="//utilizador/rua" type="xsd:string" required="true()"/>
<xforms:bind id="nporta" nodeset="//utilizador/nPorta" type="xsd:integer" required="true()"/>
<xforms:bind id="codPost1" nodeset="//utilizador/codPost1" type="xsd:integer"/>
<xforms:bind id="codPost2" nodeset="//utilizador/codPost2" type="xsd:integer" required="true()"/>
<xforms:bind id="distrito" nodeset="//utilizador/distrito" type="xsd:string" required="true()"/>
<xforms:bind id="pais" nodeset="//utilizador/pais" type="xsd:string" required="true()"/>
<xforms:bind id="telefone" nodeset="//utilizador/telefone" type="xsd:string" required="true()"/>
<xforms:bind id="email" nodeset="//utilizador/email" type="xsd:string" required="true()"/>
<xforms:bind id="username" nodeset="//utilizador/username" type="xsd:string" required="true()"/>
<xforms:bind id="password" nodeset="//utilizador/password" type="xsd:string" required="true()"/>
<xforms:submission action="http://google.com" id="s001" method="post"/>
</xforms:model>
</head>
<body>
<fieldset>
<xforms:input bind="nome">
<xforms:label> Nome </xforms:label>
<legend/>
<input class="texttoNome" type="text" name="nome"/>
</xforms:input>
<xforms:input bind="sexo">
<xforms:label> Sexo <input class="texttoSexo" type="checkbox" name="sexo"/>
</xforms:label>
</xforms:input>
<xforms:input bind="rua">
<xforms:label> Rua </xforms:label>
<input class="texttoRua" type="text" name="rua"/>
</xforms:input>
<xforms:input bind="nporta">
<xforms:label> Porta </xforms:label>
<input class="texttoPorta" type="text" name="porta"/>
</xforms:input>
<xforms:input bind="codPost1">
<xforms:label> CodigoPostal </xforms:label>
<input class="texttocodPost1" type="text" name="codPost1"/>
</xforms:input>
<xforms:input bind="codPost2">
<xforms:label> </xforms:label>
<input class="texttocodPost2" type="text" name="codPost2"/>
</xforms:input>
<xforms:input bind="distrito">
<xforms:label> Distrito </xforms:label>
<input class="texttodistrito" type="text" name="distrito"/>
</xforms:input>
<xforms:input bind="pais">
<xforms:label> País </xforms:label>
<input class="texttopais" type="text" name="pais"/>
</xforms:input>
<xforms:input bind="telefone">
<xforms:label> Telefone </xforms:label>
<input class="texttotelefone" type="text" name="telefone"/>
</xforms:input>
<xforms:input bind="email">
<xforms:label> Email </xforms:label>
<input class="texttoemail" type="text" name="email"/>
</xforms:input>
<xforms:input bind="username">
<xforms:label> Username </xforms:label>
<input class="texttousername" type="text" name="username"/>
</xforms:input>
<xforms:input model="modelUtilizador" bind="password">
<xforms:label> Password </xforms:label>
</xforms:input>
<xforms:submit submission="s001">
<xforms:label>Registar</xforms:label>
</xforms:submit>
</fieldset>
</body>
</html>
你可以看到我正在使用HTML,因为这个xForms不起作用。
当我点击提交按钮时,这也不起作用,也许这就是原因。
你可以帮我找一个xForms的解决方案没有在浏览器中显示吗?
答案 0 :(得分:2)
正如其他人所指出的那样,当前的Web浏览器本身不支持XForms。您将需要一些XForms实现来使您的表单工作。 XHTML中嵌入的XForms通常有两种实现:
浏览器端实现。
这里一个突出的例子是由AlainXML的Alain Couthures开发的XSLTForms。非常简单的安装和使用:在Web服务器上安装库并从表单中引用XSLTForms样式表。样式表使用用户Web浏览器中的XSLT引擎来构建表单的HTML + Javascript版本。
旧的X-Smiles独立浏览器和XForms的Mozilla插件是本课程的进一步示例,但据我所知,现在都没有。
服务器端实现。
突出的例子包括Orbeon和BetterForms。当有一个XForm请求进入时,服务器上的代码会生成一个带有嵌入式Ajax调用的HTML页面。有些东西在Web浏览器和服务器上的其他内容中执行(作为XForms作者不可见)。在服务器代码中,实现者拥有比在Javascript中更多的自由手在客户端上运行,因此我认为为这些实现添加新功能更容易。 Orbeon和BetterForms都有令人印象深刻的文档。
BetterForms和XSLTForms都是eXist XML数据库包的一部分。因此可以通过这种方式避免一些安装问题。我最后一次看,eXist与Orbeon打包在一起。
W3C XForms wiki上的list of active implementations指向了这些和其他实现。
答案 1 :(得分:0)
如今浏览器不支持Xforms,这就是为什么你看不到表单的任何内容。 也许你可以尝试使用Orbeon。 Orbeon Forms是构建和部署Web表单的解决方案。您必须将其部署在服务器中才能使用Xforms。