xForms:输入不在浏览器中显示

时间:2017-06-10 15:15:00

标签: html xhtml xforms

我正在尝试使用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的解决方案没有在浏览器中显示吗?

2 个答案:

答案 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。