如何使用saxon .NET api为xsi命名空间添加定义

时间:2014-09-09 05:46:14

标签: c# xml saxon xpath-2.0

我正在尝试将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?

1 个答案:

答案 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");