我正在尝试将xsi名称空间的definiton添加到saxon .NET api。
我已经使用了这个 - 但这没有帮助:
Processor xmlProcessor = new Processor();
SchemaManager manager1 = xmlProcessor.SchemaManager;
SchemaValidator validator = manager1.NewSchemaValidator();
DocumentBuilder builder = xmlProcessor.NewDocumentBuilder();
XdmNode xdmNode = builder.Build(xmlDocument);
validator.SetSource(xdmNode);
XPathCompiler compiler = xmlProcessor.NewXPathCompiler();
我需要这个解析xpath,如下所示:
substring-before(substring-after(//IzdaniRacunEnostavni/@xsi:noNamespaceSchemaLocation,'http://www.gzs.si/e-poslovanje/sheme/'))
如果Home Edition不支持,那么是否有完全支持xpath 2.0的免费外部liubrarires?
答案 0 :(得分:3)
我找到了一个问题的解决方案:
您必须使用compiler.DeclareNamespace方法。
Processor xmlProcessor = new Processor();
DocumentBuilder builder = xmlProcessor.NewDocumentBuilder();
XdmNode xdmNode = builder.Build(xmlDocument);
XPathCompiler compiler = xmlProcessor.NewXPathCompiler();
compiler.DeclareNamespace("xsi", "http://www.w3.org/2001/XMLSchema-instance");