【发布时间】:2015-05-31 01:19:06
【问题描述】:
我在表单中有一个多选输入字段,在这种情况下,它是一组复选框,但它可能是一个多选下拉列表。 表单中的字段看起来很好,但是在提交表单时请求会引发错误。查询字符串为:
?headings=on&text=on&references=on&book-category[]=mis&book-category[]=bds&book-category[]=gts
PHP 将多选输入字段作为数组处理。我认为 xquery 会将它们视为序列。显然,xquery 无法处理 http 请求中的此类字段。有没有人成功处理 xquery 中的多选输入字段?
这是生成表单字段的xslt,在源代码中看起来非常完美。
<xsl:for-each select="r:body/sidebar/search:facet[@name='category']/search:facet-value">
<xsl:variable name="category-display" select="text()"/>
<xsl:variable name="category-name" select="encode-for-uri(string-join(tokenize(lower-case(text()), ' '), ''))"/>
<xsl:variable name="category-id" select="encode-for-uri(concat('adv_books_', string-join(tokenize(lower-case(text()), ' '), '')))"/>
<li>
<input type="checkbox" name="book-category[]" id="{$category-id}" value="{$category-name}" class="checkbox" />
<label for="{$category-id}"><xsl:value-of select="$category-display" /></label>
</li>
</xsl:for-each>
这是日志中的错误:
2015-03-26 21:16:54.017 Notice: 8040-MYSITE-HTTP: XDMP-QNAMELEXFORM: for $param in xdmp:get-request-field-names() -- Invalid lexical form for QName
我认为 xquery 不喜欢参数 book-category[] 中的括号。
【问题讨论】:
-
我在这里看不到任何 XQuery。您是否可能在谈论 XPath 问题(嵌入在 XSLT 中)?
-
不,我发布的代码不包含处理 HTTP 请求的 xQuery。我刚刚发布它是为了说明表单上的实际输入字段没有任何问题。正是调用 xdmp:get-request-field-names() 的 xQuery 函数引发了日志中所见的错误。
-
这与 XQuery 关系不大,但与您使用的 XQuery 处理器有关。鉴于您提到了 xdmp 方法,我猜您正在使用 MarkLogic。我相应地编辑了问题。