C# 如何使用Saxon.Net计算Xpath表达式
如何使用saxon在.net中计算以下Xpath表达式?我需要能够传入一个变量,并在一整套代码中得到结果C# 如何使用Saxon.Net计算Xpath表达式,c#,.net,xpath,saxon,C#,.net,Xpath,Saxon,如何使用saxon在.net中计算以下Xpath表达式?我需要能够传入一个变量,并在一整套代码中得到结果 SchematronTestText = "not(count($CTR17) > 0)" 不确定这是否只是一个人工示例:但它相当于empty($CTR17),而且由于$CTR17必须作为XdmValue提供,因此您实际上可以使用XdmValue.Count==0来确定它是否为空,而无需麻烦地计算XPath表达式,感谢您的回复,因为我知道您是主要开发人员。不幸的是,这并不是一个人为的
SchematronTestText = "not(count($CTR17) > 0)"
不确定这是否只是一个人工示例:但它相当于
empty($CTR17)
,而且由于$CTR17必须作为XdmValue
提供,因此您实际上可以使用XdmValue.Count==0
来确定它是否为空,而无需麻烦地计算XPath表达式,感谢您的回复,因为我知道您是主要开发人员。不幸的是,这并不是一个人为的例子,而是我希望重新利用大众观点的一个例子。在处理这段代码时,如何将变量设置为空以使计数($CTR17)=0为真?您只需将变量分配给XdmEmptySequence.INSTANCE。我来试一试。谢谢你我不同意。问题是关于在.net的xpath中使用Saxon。我们非常感谢Michael,因为他是软件的架构师,他让我能够逐步找到我发布的答案。最后,任何有类似需求的人现在都可以找到这个片段,帮助他们进步。我已经为原始问题提供了更清晰的解释。嗨,Michael,当使用saxon9ee试验(9.7.0.6)时,方法是小写的。我可能选择了错误的版本吗?Saxon Java使用了以小写开头的方法名的Java约定;在.NET上,它使用以大写字母开头的.NET约定。另外,这两个接口非常相似。
Processor processor = new Processor(true);
XPathCompiler compiler = processor.NewXPathCompiler();
compiler.DeclareVariable(new QName("aaa"));
XPathSelector selector = compiler.Compile("not(count($aaa) > 0)").load();
selector.SetVariable(new QName("aaa"), new XdmAtomicValue('sample'));
var result = selector.EvaluateSingle().ToString();