Html表单(插入xquery)保存在xml中

时间:2017-05-28 11:18:51

标签: html xml xquery

我有一个html表单,当我按下提交按钮时我想获取信息并使用Xquery的功能,这样一个(insert)xquery将保存在xml中。

- HTML -

   <html>
    <body>
        <form action="insert.xq">
            <span ="label">Name:</span>
                <input type="text"/>
            <span ="label">Telephone:</span>
                <input type="text"/>
            <span ="label">Website:</span>
                <input type="text"/>
            <span ="label">Date:</span>
                <input type="text"/>
        <!-- Buttons submit and reset-->

        <input type="submit" value="Submit"/>
        <input type="reset" value="Delete"/>
        </form>
    </body>
</html>

- exists-db XQUERY -

xquery version "3.1";
declare namespace exist="http://exist.sourceforge.net/NS/exist";
declare namespace xmldb="http://exist-db.org/xquery/xmldb";
declare namespace request = "http://exist-db.org/xquery/request";
update insert 
        <supplier id=" ">
            <name> </name>
            <telephone> </telephone>
            <website> </website>
            <date> </date>
        </supplier>

into doc("suppliers.xml")//supplier

- XML -

<?xml version="1.0" encoding="UTF-8"?>
<suppliers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="validate.xsd">

    <supplier id="1">
        <name>Microsoft</name>
        <telephone>943715587</telephone>
        <website>www.microsoft.com</website>
        <date>10/08/2016</date>
    </supplier>

</suppliers>

抱歉我的英文。

1 个答案:

答案 0 :(得分:0)

HTTP REST接口中的参数使用请求函数在XQuery中访问变量:

 let $name := request:get-parameter("name","")
 let $telephone := request:get-parameter("telephone","")
 let $website := request:get-parameter("website","")
 let $date := request:get-parameter("date","")

然后像在XQuery变量中那样在其余代码中使用:

 update insert 
    <supplier id=" ">
        <name>{$name}</name>
  ...

现在,这是一个开始。您的HTML需要输入元素上的name属性,以将它们作为参数传递给查询。在let之后需要返回,并且http请求应设置为GET。不知道你的系统,查询和文档必须对所有人开放,除非你在一些基于会话的环境中,HTML GET可以根据控制器中的某些路径找到XQuery。

这与http://path/to/myquery.xm?name=John%20Doe&telephone=123456789基本相同......您想要获取姓名和电话。