Example #1
0
        /// <summary>
        /// Doc operation.
        /// </summary>
        /// <param name="args">
        ///            Result from the expressions evaluation. </param>
        /// <param name="dc">
        ///            Result of dynamic context operation. </param>
        /// <exception cref="DynamicError">
        ///             Dynamic error. </exception>
        /// <returns> Result of fn:doc operation. </returns>
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in .NET:
//ORIGINAL LINE: public static org.eclipse.wst.xml.xpath2.api.ResultSequence collection(java.util.Collection args, org.eclipse.wst.xml.xpath2.api.EvaluationContext ec) throws org.eclipse.wst.xml.xpath2.processor.DynamicError
        public static ResultSequence collection(ICollection args, EvaluationContext ec)
        {
            ICollection cargs = Function.convert_arguments(args, expected_args());

            // get args
            IEnumerator    argiter = cargs.GetEnumerator();
            ResultSequence arg1    = null;

            string uri = DEFAULT_COLLECTION_URI;

            if (argiter.MoveNext())
            {
                arg1 = (ResultSequence)argiter.Current;
                uri  = ((XSString)arg1.first()).value();
            }

            try
            {
                new URI(uri);
            }
            catch
            {
                throw DynamicError.doc_not_found(null);
            }

            if (uri.IndexOf(":", StringComparison.Ordinal) < 0)
            {
                throw DynamicError.invalidCollectionArgument();
            }


            URI resolved = ec.DynamicContext.resolveUri(uri);

            if (resolved == null)
            {
                throw DynamicError.invalid_doc(null);
            }

            ResultSequence rs = getCollection(uri, ec);

            if (rs.empty())
            {
                throw DynamicError.doc_not_found(null);
            }

            return(rs);
        }