コード例 #1
0
        public string replace(object input, string pattern, string replacement, string flags)
        {
            // fn:replace($input as xs:string?, $pattern as xs:string, $replacement as xs:string, $flags as xs:string) as xs:string

            string inputStr = ExtensionObjectConvert.ToString(input) ?? "";

            return(Regex.Replace(inputStr, pattern, replacement, ParseFlags(flags)));
        }
コード例 #2
0
        public bool matches(object input, string pattern, string flags)
        {
            // fn:matches($input	as xs:string?, $pattern as xs:string, $flags as xs:string) as xs:boolean

            string inputStr = ExtensionObjectConvert.ToString(input) ?? "";

            return(Regex.IsMatch(inputStr, pattern, ParseFlags(flags)));
        }
コード例 #3
0
        protected bool ends_with(object arg1, object arg2)
        {
            // fn:ends-with($arg1 as xs:string?, $arg2 as xs:string?) as xs:boolean

            string first  = ExtensionObjectConvert.ToString(arg1) ?? "";
            string second = ExtensionObjectConvert.ToString(arg2) ?? "";

            return(first.EndsWith(second));
        }
コード例 #4
0
        protected string upper_case(object arg)
        {
            // fn:upper-case($arg as xs:string?) as xs:string

            string str = ExtensionObjectConvert.ToString(arg);

            if (str == null)
            {
                return("");
            }

            return(str.ToUpper());
        }
コード例 #5
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))));
        }
コード例 #6
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));
        }
コード例 #7
0
        protected string encode_for_uri(object arg)
        {
            // fn:encode-for-uri($uri-part as xs:string?) as xs:string

            string value = ExtensionObjectConvert.ToString(arg);

            if (value == null)
            {
                return("");
            }

            return(Uri.EscapeDataString(value));
        }
コード例 #8
0
        public object compare(object comparand1, object comparand2)
        {
            // fn:compare($comparand1 as xs:string?, $comparand2 as xs:string?) as xs:integer?

            string first  = ExtensionObjectConvert.ToString(comparand1);
            string second = ExtensionObjectConvert.ToString(comparand2);

            if (first == null ||
                second == null)
            {
                return(ExtensionObjectConvert.EmptyIterator);
            }

            return(String.Compare(first, second));
        }
コード例 #9
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));
        }
コード例 #10
0
        protected object namespace_uri_for_prefix(object prefix, XPathNavigator element)
        {
            // fn:namespace-uri-for-prefix($prefix as xs:string?, $element as element()) as xs:anyURI?

            IDictionary <string, string> namespaces = element.GetNamespacesInScope(XmlNamespaceScope.All);

            string p = ExtensionObjectConvert.ToString(prefix) ?? "";

            string ns;

            if (!namespaces.TryGetValue(p, out ns))
            {
                return(ExtensionObjectConvert.EmptyIterator);
            }

            return(ns);
        }
コード例 #11
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)));
            }
        }