public object tokenize(object input, string pattern, string flags) { // fn:tokenize($input as xs:string?, $pattern as xs:string, $flags as xs:string) as xs:string* string inputStr = ExtensionObjectConvert.ToString(input); if (!inputStr.HasValue()) { return(ExtensionObjectConvert.EmptyIterator); } return(ExtensionObjectConvert.ToInput(Regex.Split(inputStr, pattern, ParseFlags(flags)))); }
protected object resolve_uri(object relativeUri) { string relativeUriStr = ExtensionObjectConvert.ToString(relativeUri); if (relativeUriStr == null) { return(ExtensionObjectConvert.EmptyIterator); } Uri resolvedUri = resolve_uri_impl(relativeUriStr, static_base_uri_impl()); return(ExtensionObjectConvert.ToInput(resolvedUri)); }
protected object resolve_uri(object relativeUri, string baseUri) { // fn:resolve-uri($relative as xs:string?, $base as xs:string) as xs:anyURI? string relativeUriStr = ExtensionObjectConvert.ToString(relativeUri); if (relativeUriStr == null) { return(ExtensionObjectConvert.EmptyIterator); } Uri baseU = new Uri(baseUri, UriKind.Absolute); Uri resolvedUri = resolve_uri_impl(relativeUriStr, baseU); return(ExtensionObjectConvert.ToInput(resolvedUri)); }
static object parse_xml_impl(object arg, bool fragment) { string str = ExtensionObjectConvert.ToString(arg); if (str == null) { return(ExtensionObjectConvert.EmptyIterator); } var parseOptions = new XmlParsingOptions { ConformanceLevel = (fragment) ? ConformanceLevel.Fragment : ConformanceLevel.Document }; var itemFactory = new SystemItemFactory(); using (var reader = new StringReader(str)) { return(ExtensionObjectConvert.ToInput(itemFactory.CreateNodeReadOnly(reader, parseOptions))); } }
public object data(object arg) { // fn:data($arg as item()*) as xs:anyAtomicType* XPathNodeIterator iter = arg as XPathNodeIterator; if (iter == null) { // if not iterator then it's a single item, return unchanged return(arg); } if (ExtensionObjectConvert.IsEmpty(iter)) { return(ExtensionObjectConvert.EmptyIterator); } if (iter.Count == 1) { return(iter.Cast <XPathNavigator>().Single().TypedValue); } return(ExtensionObjectConvert.ToInput(iter.Cast <XPathNavigator>().Select(n => n.TypedValue))); }