saxon - Saxon XPath 错误 - “无法序列化属性”
问题描述
当我运行 XQuery 命令行时,只要结果是一个元素,它就可以工作。
当我扩展该 XQuery 以仅获取属性值时,它失败并出现以下错误:
SENR0001: Cannot serialize a free-standing attribute node (net.sf.saxon.om.NameOfNode)
所以,这行得通
java -cp ...Saxon-HE-9.9.0-1.jar net.sf.saxon.Query
-s:AnyXMLFileAvailable.xml -qs:/
这失败了:
java -cp ...Saxon-HE-9.9.0-1.jar net.sf.saxon.Query
s:AnyXMLFileAvailable.xml -qs://@*
只要 XML 中的任何位置至少有一个属性,此命令就会失败并出现上述错误
我相信这可以通过许可的撒克逊人解决,它可以使用
-outval:recover
转变。还有其他方法吗?
解决方案
从命令行运行 Query 时的默认序列化方法是“xml”;出于兼容性原因,我一直不愿意更改它。当您尝试序列化某些结果(包括映射、数组和属性节点)时,“xml”序列化方法会失败。
如果您!method=adaptive
在命令行上设置(如果使用 bash,则使用“\”转义“!”)那么序列化永远不会失败,它将产生某种查询结果的表示。如果结果是一个属性,它将表示它name="value"
可能是您想要的,也可能不是您想要的。如果您实际上只想要属性的字符串值,那么您需要在查询中提取它,例如使用string()
ordata()
函数。
该-outval
选项非常无关紧要,它与查询结果的模式验证有关。
推荐阅读
- typescript - 在新对象实例上执行的 Typescript 类方法
- xamarin.ios - 如何在 Xamarin.iOS 中使用 ViewModel
- python-3.x - ModuleNotFoundError:没有名为“comet_ml”的模块
- php - 自动为 laravel 模型中的字段赋值
- git - 分支正则表达式不起作用时的Jenkinsfile阶段
- python - 如何从给定峰的图中计算峰宽
- gridview - 如果此单元格在 devexpress gridview 中为空,则阻止移动到下一个单元格
- python - 如果不满足使用熊猫的条件,如何删除行
- ruby - 如果传递了一个范围,如何实现一个函数来迭代
- python-3.x - 如何在字符串中的重复单词之前添加分隔符?