owe*_*ter 3 xpath xquery exist-db
我在eXist上写xquery .
通常我用这种方式在xml中选择项目:
fn:doc($document_name)/root/a
Run Code Online (Sandbox Code Playgroud)
但现在我想从字符串变量中获取xpath:
let $xpath := request:get-parameter("xpath", "")
fn:doc($document_name)/$xpath
Run Code Online (Sandbox Code Playgroud)
当然它不起作用.我现在找到的唯一方法是使用eval
:
util:eval(fn:concat("fn:doc($document_name)", $xpath)):)
Run Code Online (Sandbox Code Playgroud)
但我不想使用,eval
因为它很慢而且不安全.
我知道有类似的东西:
fn:doc($document_name)/*[name()='node_name']
Run Code Online (Sandbox Code Playgroud)
但我想通过整个路径选择项目,但不仅仅是节点的名称,我也尝试使用node-xpath()
但不知道如何使用它就像name()
你想要做eval()函数所做的事情,所以任何解决方案都会遇到与eval相同的问题.您可以考虑的另一种方法是生成查询然后执行它,但它会有完全相同的问题.如果您认为将字符串限制为XPath表达式的子集(例如,没有谓词或没有函数调用)可能更安全,那么您可以尝试使用简单的正则表达式测试这些条件.
归档时间: |
|
查看次数: |
2284 次 |
最近记录: |