这是失败的,我不确定这是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工作?