Example #1
0
 /// <summary>
 /// Accept a node and an atomic value and return the sequence containing the string
 /// value of the node followed by the value.
 /// </summary>
 public static XdmValue combine(XdmNode node, XdmAtomicValue value)
 {
     ArrayList list = new ArrayList();
     list.Add(new XdmAtomicValue(node.StringValue));
     list.Add(value);
     return new XdmValue(list);
 }
        public void AddParameter(string name, [NotNull] string value)
        {
            if (string.IsNullOrWhiteSpace(name))
                throw new ArgumentException("Argument is null or whitespace", nameof(name));
            if (value == null) throw new ArgumentNullException(nameof(value));

            var key = new QName(name);
            _externalParameters[key] = new XdmAtomicValue(value);
        }
        /// <summary>
        /// Create an XdmValue from an underlying Saxon ValueRepresentation object.
        /// This method is provided for the benefit of applications that need to mix
        /// use of the Saxon .NET API with direct use of the underlying objects
        /// and methods offered by the Java implementation.
        /// </summary>
        /// <param name="value">An object representing an XDM value in the
        /// underlying Saxon implementation.</param>
        /// <returns>An XdmValue that wraps the underlying Saxon value
        /// representation.</returns>

        public static XdmValue Wrap(ValueRepresentation value) {
            XdmValue result;
            if (value == null || value is EmptySequence) {
                return XdmEmptySequence.INSTANCE;
            } else if (value is JAtomicValue) {
                result = new XdmAtomicValue();
            } else if (value is NodeInfo) {
                result = new XdmNode();
            } else {
                result = new XdmValue();
            }
            result.value = value;
            return result;
        }
Example #4
0
        /// <summary>
        /// Create an XdmValue from an underlying Saxon ValueRepresentation object.
        /// This method is provided for the benefit of applications that need to mix
        /// use of the Saxon .NET API with direct use of the underlying objects
        /// and methods offered by the Java implementation.
        /// </summary>
        /// <param name="value">An object representing an XDM value in the
        /// underlying Saxon implementation.</param>
        /// <returns>An XdmValue that wraps the underlying Saxon value
        /// representation.</returns>

        public static XdmValue Wrap(ValueRepresentation value)
        {
            XdmValue result;

            if (value == null || value is EmptySequence)
            {
                return(XdmEmptySequence.INSTANCE);
            }
            else if (value is JAtomicValue)
            {
                result = new XdmAtomicValue();
            }
            else if (value is NodeInfo)
            {
                result = new XdmNode();
            }
            else
            {
                result = new XdmValue();
            }
            result.value = value;
            return(result);
        }
        public XdmAtomicValueWrapper(XdmAtomicValue atomicValue)
        {
            if (atomicValue == null) throw new ArgumentNullException("atomicValue");

             this.atomicValue = atomicValue;
        }
        /// <summary>
        /// Add parameters to a transform
        /// </summary>
        /// <param name="parameterList"></param>
        /// <param name="xslProc"></param>
        private void AddParameters(XMLUtilities.XSLParameter[] parameterList)
        {
            if (parameterList != null)
            {
                foreach (XMLUtilities.XSLParameter rParam in parameterList)
                {
                    var parameterName = new QName(rParam.Name);

                    // Following is a specially recognized parameter name
                    if (rParam.Name == "prmSDateTime")
                    {
                        var parameterValue = new XdmAtomicValue((new QName(XMLUtilities.GetCurrentDateTime(CultureToUse))));
                        m_transformer.SetParameter(parameterName, parameterValue);
                    }
                    else
                    {
                        var parameterValue = new XdmAtomicValue((new QName(rParam.Value)));
                        m_transformer.SetParameter(parameterName, parameterValue);
                    }
                }
            }
        }
Example #7
0
        /// <summary>
        /// Show a direct call on a user-defined function defined within the query
        /// </summary>
        public override void run(Uri samplesDir)
        {
            Processor processor = new Processor();

            XQueryCompiler qc = processor.NewXQueryCompiler();
            XQueryExecutable exp1 = qc.Compile("declare namespace f='f.ns';" +
                   "declare variable $z := 1 + xs:integer(doc-available('" + new Uri(samplesDir, "data/books.xml").ToString() + "'));" +
                   "declare variable $p as xs:integer external;" +
                   "declare function f:t1($v1 as xs:integer) { " +
                   "   $v1 div $z + $p" +
                   "};" +
                   "10");
            XQueryEvaluator ev = exp1.Load();
            ev.SetExternalVariable(new QName("", "p"), new XdmAtomicValue(39));
            XdmValue v1 = new XdmAtomicValue(10);
            XdmValue result = ev.CallFunction(new QName("f.ns", "f:t1"), new XdmValue[] { v1 });
            Console.WriteLine("First result (expected 44): " + result.ToString());
            v1 = new XdmAtomicValue(20);
            result = ev.CallFunction(new QName("f.ns", "f:t1"), new XdmValue[] { v1 });
            Console.WriteLine("Second result (expected 49): " + result.ToString());
        }
Example #8
0
 public override IXdmEnumerator Call(IXdmEnumerator[] arguments, DynamicContext context)
 {
     Boolean exists = arguments[0].MoveNext();
     if (exists)
     {
         XdmAtomicValue arg = (XdmAtomicValue)arguments[0].Current;
         double val = (double)arg.Value;
         double sqrt = System.Math.Sqrt(val);
         XdmAtomicValue result = new XdmAtomicValue(sqrt);
         return (IXdmEnumerator)result.GetEnumerator();
     }
     else
     {
         return EmptyEnumerator.INSTANCE;
     }
 }
Example #9
0
        /// <summary>
        /// Create an XdmValue from an underlying Saxon ValueRepresentation object.
        /// This method is provided for the benefit of applications that need to mix
        /// use of the Saxon .NET API with direct use of the underlying objects
        /// and methods offered by the Java implementation.
        /// </summary>
        /// <param name="value">An object representing an XDM value in the
        /// underlying Saxon implementation. If the parameter is null,
        /// the method returns null.</param>
        /// <returns>An XdmValue that wraps the underlying Saxon value
        /// representation.</returns>

        public static XdmValue Wrap(ValueRepresentation value)
        {
            XdmValue result;
            if (value == null)
            {
                return null;
            }
            if (value is JEmptySequence)
            {
                return XdmEmptySequence.INSTANCE;
            }
            else if (value is JAtomicValue)
            {
                result = new XdmAtomicValue();
            }
            else if (value is NodeInfo)
            {
                result = new XdmNode();
            }
            else if (value is JSingletonItem)
            {
                value = ((JSingletonItem)value).asItem();
                result = new XdmNode();
            }
            else
            {
                result = new XdmValue();
            }
            result.value = value;
            return result;
        }