-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathNancyXQueryResolver.cs
More file actions
64 lines (54 loc) · 2.26 KB
/
NancyXQueryResolver.cs
File metadata and controls
64 lines (54 loc) · 2.26 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
using System;
using System.IO;
using Figaro;
namespace Nancy.Demos.Figaro
{
/// <summary>
/// The XQuery subsystem is extensible through language extension and by resolution. In this (latter) case, we are
/// telling the language engine where it can find our local module(s). See the documentation link below for details.
/// </summary>
/// <seealso cref="http://help.bdbxml.net/html/e1571f63-0de0-4119-8dd3-68dc8693f732.htm"/>
public class NancyXQueryResolver: XQueryResolver
{
private string path;
public NancyXQueryResolver(Uri uri, string rootPath) : base(uri)
{
path = rootPath;
}
public override XmlDocument ResolveDocument(XmlTransaction txn, XmlManager mgr, string uri)
{
return null;
}
public override bool ResolveCollection(XmlTransaction txn, XmlManager mgr, string uri, XmlResults collection)
{
return false;
}
public override XmlInputStream ResolveSchema(XmlTransaction txn, XmlManager mgr, string schemaLocation, string nameSpace)
{
return null;
}
public override XmlInputStream ResolveEntity(XmlTransaction txn, XmlManager mgr, string systemId, string publicId)
{
return null;
}
public override bool ResolveModuleLocation(XmlTransaction txn, XmlManager mgr, string nameSpace, XmlResults moduleLocations)
{
Console.WriteLine($"ResolveModuleLocation namespace:{nameSpace},moduleLocation: {moduleLocations.Count}");
return true;
}
public override XmlInputStream ResolveModule(XmlTransaction txn, XmlManager mgr, string moduleLocation, string nameSpace)
{
if (moduleLocation.ToLower().Equals("nancy.xqm"))return mgr.CreateLocalFileInputStream(Path.Combine(path,"Home", moduleLocation));
return null;
}
public override XmlExternalFunction ResolveExternalFunction(XmlTransaction txn, XmlManager mgr, string uri, string name, ulong numArgs)
{
if (uri != Uri.ToString()) return null;
return new DecodeFunction();
}
protected override void Dispose(bool A_0)
{
base.Dispose(A_0);
}
}
}