【发布时间】:2019-05-22 09:04:03
【问题描述】:
我正在维护我工作的公司的一个遗留工具,用 C# 编写,并将其转换为 .Net 标准 2.0。它使用Saxon-HE 处理器来处理一些XPath 并替换文件中的一些配置。 它在.NET 上的NuGet package 具有不允许在所有.Net 标准2.0 兼容平台(在我的情况下是.Net Framework 和.Net 核心)上执行的依赖项,所以我需要用另一种工具替换它,更好如果是标准的 .Net XPath 库。
问题是该工具使用了一些 XPaths 来执行复杂的操作,例如连接字符串和选择一个数组项,我不知道它是 Saxon 特定的语法还是标准。
了解这一点很重要,因为如果 XPath 符合某些 XPath 标准,我可以找到另一种方法来处理相同的 XPath。
这里有一些例子:
第一:
for $row in /Item/SubItem[*]/SubSubItem return(concat($row, \"/ConcatValue\"))
第二:
/Item/SubItem[*]/SubSubItem/(add[@key=\"TheKey\"]/@value/string(), '')[1]
您对这种 XPath 语法有所了解吗?
谢谢
【问题讨论】:
-
请从您使用的标签的 SO 页面stackoverflow.com/tags/xpath-3.1/info 方便地为您链接查看相关的 XPath 规范。而且我不知道谁会考虑在 XPath 中使用
concat一个“复杂”操作。 -
github.com/StefH/XPath2.Net 声称它以与 .NET Standard 2.0 兼容的方式支持 XPath 2.0。
-
当你说“它的 NuGet 包不符合 .Net 标准”时,我的想法是否正确,你的意思是 .NET 上的 Saxon 具有依赖关系,这意味着它不会在所有兼容的平台上运行,具体来说,它不会在 .NET Core 上运行”?因为按照您的措辞,听起来 NuGet 包有问题,这很容易解决。
-
@MichaelKay 是的,我需要这个应用程序在 .Net 框架和 .Net 核心环境中运行,所以使用的所有依赖项都必须符合 .Net 标准 2.0 才能执行“一切”。很抱歉措辞错误,我现在正在修复它
标签: xpath xquery saxon xquery-3.1 xpath-3.1