Exemplo n.º 1
0
        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))));
        }
Exemplo n.º 2
0
        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));
        }
Exemplo n.º 3
0
        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));
        }
Exemplo n.º 4
0
        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)));
            }
        }
Exemplo n.º 5
0
        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)));
        }