这是失败的,我不确定这是 xqilla 的限制或错误:
xqilla -i file.xml <(echo "//abcd:case[@xyz:displayName='locate']/abcd:condition/text()")
/dev/fd/63:1:3: error: No namespace for prefix 'abcd' [err:XPST0081]
但是,我可以使用它:
$ xqilla -i file.xml <(echo "//*:case[@*:displayName='locate']/*:condition/text()")
hello world
在同一个file.xml上使用 xidel :
$ xidel file.xml --extract '//abcd:case[@xyz:displayName="locate"]/abcd:condition/text()'
**** Retrieving: x.bpel ****
**** Processing: x.bpel ****
hello world
在同一个file.xml上使用 xmlstarlet :
$ xml sel -t -v '//abcd:case[@xyz:displayName="locate"]/abcd:condition/text()' file.xml
hello world
如何让 sqilla 找到命名空间?
更新:我想通过创建另一个文件来添加,如何让它适用于 sqilla :
$ cat newfile
declare namespace xyz="http://www.ibm.com/xmlns/prod/websphere/business-process/6.0.0/";
declare namespace abcd="http://schemas.xmlsoap.org/ws/2004/03/business-process/";
doc("file.xml")//abcd:case[@xyz:displayName='locate']/abcd:condition/text()
然后通过以下方式调用它:
$ xqilla newfile
hello world
它应该如何适用于 sqilla ?
答案 0 :(得分:1)
它无法正常工作的原因是因为XQilla在命名空间方面非常敏感 - 因此是初始错误[err:XPST0081]
。可以在http://xqilla.sourceforge.net/CommandLine?show_comments=0找到更多命令行信息。