xforms 相关问题

Web表单的XML规范。

处理 XSLTForms 中的 HTTP 错误? (CORS、未找到等)

我正在寻找有关如何处理为实例获取 XML 数据时的错误的建议。 例如,我可以这样做(强制错误): 我正在寻找有关如何处理为实例获取 XML 数据时的错误的建议。 我可以这样做(强制错误): <xf:instance id="feed" src="https://httpbin.org/status/404"/> XSLTForms 检测到问题并显示模式错误。 但是:我想以用户友好的方式处理这个错误。 所以:我尝试了这个 - 从一个空模型开始,然后执行提交来获取数据,如下所示: <xf:instance id="feed"> <channel xmlns=""> <title/> <description/> <image> <url/> </image> <item/> </channel> </xf:instance> <xf:submission id="load" replace="instance" instance="feed" resource="https://httpbin.org/status/404" method="get" serialize="none"> <xf:message level="modeless" ev:event="xforms-submit-error"> <xf:output value="'Error fetching data'"/> </xf:message> </xf:submission> 这可行 - 但我必须将负载绑定到这样的按钮上: <xf:trigger id="t1"> <xf:label>LOAD</xf:label> <xf:send ev:event="DOMActivate" submission="load"/> </xf:trigger> 所以 - 我单击按钮(尝试)加载数据。 问题: 而不是使用按钮手动加载数据 - 如何使用 xforms-ready(如果这是正确的?)事件来尝试自动加载(这样它的行为就像使用“src”,但具有自定义错误处理)。 我可以检测并显示服务器返回的实际响应吗? (所以“404”或“CORS”错误等?) 以下内容将检测并报告 HTTP 404(和 HTTP 200)。 但它不处理 CORS 错误,而且我仍然不确定如何捕获这些错误。 要查看三个结果(有效(希望如此)、404 和 CORS) - 手动编辑下面的标签,分别将 URL 索引从 1 更改为 3。 <xf:resource value="urls/url[1]"/> <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet href="declarative4all/build/xsl/xsltforms.xsl" type="text/xsl"?> <?xsltforms-options debug="yes"?> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:ht="http://www.w3.org/1999/xhtml" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xf="http://www.w3.org/2002/xforms" xmlns:ev="http://www.w3.org/2001/xml-events" lang="en"> <head> <meta charset="utf-8"/> <meta name="viewport" content="width=device-width, initial-scale=1"/> <xf:model id="model"> <xf:instance> <data xmlns=""> <urls> <url>https://podcasts.files.bbci.co.uk/b05qqhqp.rss</url> <url>https://httpbin.org/status/404</url> <url>https://feeds.acast.com/public/shows/125ef5a6-6c61-4024-b70e-3487a971a26c</url> </urls> <res>initial</res> </data> </xf:instance> <xf:instance id="feed"> <channel xmlns=""> <title/> <description/> <image> <url/> </image> <item/> </channel> </xf:instance> <xf:submission id="s_load" replace="instance" instance="feed" method="get" serialization="none"> <xf:resource value="urls/url[1]"/> <xf:action ev:event="xforms-submit-error"> <xf:setvalue ref="res" value="event('response-status-code')"/> </xf:action> <xf:action ev:event="xforms-submit-done"> <xf:setvalue ref="res" value="event('response-status-code')"/> </xf:action> </xf:submission> <xf:action ev:event="xforms-ready"> <xf:send submission="s_load"/> </xf:action> </xf:model> </head> <body> <xf:output value="res"> <xf:label>Response-Status-Code: </xf:label> </xf:output> <xf:group ref="instance('feed')/channel"> <xf:repeat ref="item"> <details> <summary><xf:output value="title"/></summary> <xf:output value="description"/> </details> </xf:repeat> </xf:group> </body> </html>

回答 1 投票 0

XSLTForms / XForms - 实例数据中的命名空间?

我在这里做错了什么 - 我的 XForms 数据源是 SPARQL 结果 - 我可以使用以下 XPATH 获取它: 我在这里做错了什么 - 我的 XForms 数据源是 SPARQL 结果 - 我可以使用以下 XPATH 来获取它: <bind id="bnd_results" nodeset="instance('sparql')/*/*/*"/> 但如果不使用“*”通配符,我似乎无法让它工作。 它似乎与实例数据的命名空间有关。 <?php header('Content-Type: text/xml; charset=utf-8'); if (isset($_GET['debug'])) { $debug="yes"; } else { $debug="no"; } ?> <?xml-stylesheet href="xsltforms/xsltforms.xsl" type="text/xsl"?> <?xsltforms-options debug="<?=$debug?>"?> <?php $sparqlep="https://dbpedia.org/sparql?query="; $sparql=<<<SPARQL SELECT DISTINCT(?linkedPerson) WHERE { ?s rdfs:label 'World Wide Web Consortium'@en; foaf:isPrimaryTopicOf ?wikipage. ?linkedPerson rdf:type dbo:Person, foaf:Person; foaf:isPrimaryTopicOf ?linkedwikipage. { ?s ^dbo:wikiPageWikiLink ?linkedPerson.} UNION { ?s dbo:wikiPageWikiLink ?linkedPerson. }} LIMIT 100 SPARQL; $url=$sparqlep . rawurlencode($sparql); ?> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:xf="http://www.w3.org/2002/xforms" xmlns:sparql="http://www.w3.org/2005/sparql-results#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/sw/DataAccess/rf1/result2.xsd"> <head> <model xmlns="http://www.w3.org/2002/xforms"> <instance id="sparql" src="<?=$url?>"/> <instance id="default"> <data xmlns=""> <selected/> </data> </instance> <bind id="bnd_results" nodeset="instance('sparql')/*/*/*"/> <bind id="bnd_sel" nodeset="instance('default')/selected"/> </model> </head> <body> <details> <summary>SPARQL query</summary> <code> <?=$sparql?> </code> </details> <group xmlns="http://www.w3.org/2002/xforms"> <label>Selected:</label> <output bind="bnd_sel"/> <select1 appearance="full" bind="bnd_sel"> <itemset bind="bnd_results"> <label ref="."/> <value ref="."/> </itemset> </select1> </group> </body> </html> 即使它是 XPath 1.0 的扩展,XSLTForms 也允许使用“*”指定任何前缀,例如“*:myelement”。 还可以在表单中声明前缀,以便可以在 XPath 表达式中使用它。 以下更改有效(缺少 xpath 中的初始“/sparql” - 并仅从“结果”开始) <bind id="bnd_results" nodeset="instance('sparql')/sparql:results/sparql:result/sparql:binding[@name='linkedPerson']"/> 这是一个工作示例 - 也从中删除了 PHP - 现在只是静态 XHTM + XLSTForms: <?xml-stylesheet href="xsltforms/xsltforms.xsl" type="text/xsl"?> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:xf="http://www.w3.org/2002/xforms" xmlns:sparql="http://www.w3.org/2005/sparql-results#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/sw/DataAccess/rf1/result2.xsd"> <head> <xf:model> <xf:instance id="sparql"> <data xmlns=""> <query>prefix dbo: &lt;http://dbpedia.org/ontology/> prefix foaf: &lt;http://xmlns.com/foaf/0.1/> prefix rdfs: &lt;http://www.w3.org/2000/01/rdf-schema#> SELECT DISTINCT ?linkedPerson WHERE { ?s rdfs:label 'World Wide Web Consortium'@en; foaf:isPrimaryTopicOf ?wikipage. ?linkedPerson a dbo:Person; foaf:isPrimaryTopicOf ?linkedwikipage. { ?s ^dbo:wikiPageWikiLink ?linkedPerson.} UNION { ?s dbo:wikiPageWikiLink ?linkedPerson. } } LIMIT 100 </query> </data> </xf:instance> <xf:instance id="results"> <sparql:results/> </xf:instance> <xf:instance id="default"> <data xmlns=""> <selected/> </data> </xf:instance> <xf:bind id="bnd_results" nodeset="instance('results')/sparql:results/sparql:result/sparql:binding[@name='linkedPerson']"/> <xf:bind id="bnd_sel" nodeset="instance('default')/selected"/> <xf:submission id="run_sparql" method="get" resource="https://dbpedia.org/sparql" ref="instance('sparql')" replace="instance" instance="results"> <xf:header combine="replace"> <xf:name>Accept</xf:name> <xf:value>application/sparql-results+xml, charset UTF-8</xf:value> </xf:header> </xf:submission> </xf:model> </head> <body> <xf:textarea ref="instance('sparql')/query" cols="80" rows="10" spellcheck="false"> <xf:label>SPARQL</xf:label> </xf:textarea> <xf:trigger> <xf:label>Submit</xf:label> <xf:action ev:event="DOMActivate"> <xf:send submission="run_sparql"/> </xf:action> </xf:trigger> <group xmlns="http://www.w3.org/2002/xforms"> <label>Selected:</label> <output bind="bnd_sel"/> <select1 appearance="full" bind="bnd_sel"> <itemset bind="bnd_results"> <label ref="."/> <value ref="."/> </itemset> </select1> </group> </body> </html>

回答 2 投票 0

XSLTForms:在输出节点上设置属性? (<xf:output>)

以下输出有效(它是 以下输出有效(它是 <xf:output value="concat( instance('images')/@base_api, resource[@href=../links/resource[@rel='image']/@href]/links/resource[@rel='thumbnail']/@href)" mediatype="image/* width="64px" height="64px" /> 因此,假设我的模型中有“宽度”和“高度”属性 - 有没有办法从模型中设置属性,而不是像我这里那样硬编码为“64px”? 我还想设置“alt”属性。 我正在使用客户端XSLTForms,版本:1.2。 AVT 允许您使用 {} 在属性值中嵌入 XPath 表达式。 例如:width="{resource/image/size * 2}px"

回答 1 投票 0

如何使用XForms?

最近,我偶然发现了XForms(W3C 1.1,ODK XForms),我很难看清它们的用法(如果仍在使用)。 SO标签页显示:XForms是一种XML格式,用于指定数据...

回答 3 投票 1

如何以Orbeon形式动态定义'文本字段'控件的标签?

我想问你,加载表格时是否可以动态定义'文本字段'控件的标签。实际上,我需要通过URL参数传递标签值并使用该值...

回答 1 投票 0

使用XForms在eXistDB中选择并运行Xquery

我正在研究Xforms和eXistDB,我坚持认为可以说选择下拉列表并将选择作为变量使用并在eXist中运行xquery返回结果。一世 ...

回答 1 投票 0

Orbeon 2018.1无法从html / head / script访问ORBEON对象

从Orbeon 2018.1开始,ORBEON javascript对象的加载方式发生了变化。以下内容曾用于2017.2.2和3.9版本。目标:我想使用...加载TinyMCE小部件

回答 1 投票 0

Orbeon 2018.1 TinyMCE破碎/不同

我已经将Orbeon 2017.2.2和Orbeon 2018.1并排用于测试目的。表单从eXist-db 4.3.1加载。文本编辑器的代码如下:

回答 1 投票 0

Orbeon:检查重复网格中是否有任何答案是否为真

我有一个带有几个控件的重复网格,其中一个是yes-no control。在重复网格外的控件中,我想显示一个警告(使用公式),无论何时出现......

回答 1 投票 0

获取组件中的配置值

我想构建几个自动完成组件来查询我的应用程序的用户可以轻松使用的外部服务。为此,我想在组件中定义相对服务路径...

回答 1 投票 0

在textarea.min.js.map和orbeon-form-runner-opt.js.map上xforms HTTP 404

Orbeon 2017.2.2。加载此版本后,我从所有xhtml页面收到以下错误:[错误]无法加载资源:服务器响应状态为404()(Textarea.min.js.map,...

回答 1 投票 0

Orbeon - 非常慢的xml大数据导入[加载并保存]

我正在创建一个带有xml文件导入功能的表单。我想迭代导入的xml文件以获取网格表的相应行。每行由一组不同的输入组成......

回答 1 投票 0

当xxforms:dialog在xforms:repeat中时,客户端代码中的异常

我在Orbeon 2017.1中遇到了一个小故障,它没有出现在2015年末/ 2016年初版本的软件中:在xforms中添加某些元素时出现错误弹出:...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.