public object @double(XPathNodeIterator arg) { if (ExtensionObjectConvert.IsEmpty(arg)) { return(ExtensionObjectConvert.EmptyIterator); } arg.MoveNext(); return(XmlConvert.ToDouble(arg.Current.Value)); }
public object @duration(XPathNodeIterator arg) { if (ExtensionObjectConvert.IsEmpty(arg)) { return(ExtensionObjectConvert.EmptyIterator); } arg.MoveNext(); return(XmlConvert.ToString(XmlConvert.ToTimeSpan(arg.Current.Value))); }
public object @string(XPathNodeIterator arg) { if (ExtensionObjectConvert.IsEmpty(arg)) { return(ExtensionObjectConvert.EmptyIterator); } arg.MoveNext(); return(arg.Current.Value); }
public object dateTime(XPathNodeIterator arg) { if (ExtensionObjectConvert.IsEmpty(arg)) { return(ExtensionObjectConvert.EmptyIterator); } arg.MoveNext(); return(XmlConvert.ToString(XmlConvert.ToDateTimeOffset(arg.Current.Value), DateTimeFormat)); }
public object @integer(XPathNodeIterator arg) { if (ExtensionObjectConvert.IsEmpty(arg)) { return(ExtensionObjectConvert.EmptyIterator); } arg.MoveNext(); return(Decimal.Parse(arg.Current.Value, NumberStyles.Integer, NumberFormatInfo.InvariantInfo)); }
protected object document_uri(XPathNodeIterator iter) { // fn:document-uri($arg as node()?) as xs:anyURI? XPathNavigator node; if (ExtensionObjectConvert.IsEmpty(iter) || !iter.MoveNext() || (node = iter.Current).NodeType != XPathNodeType.Root) { return(ExtensionObjectConvert.EmptyIterator); } return(node.BaseURI); }
protected string string_join(object arg, string separator) { // fn:string-join($arg1 as xs:string*, $arg2 as xs:string) as xs:string XPathNodeIterator iter = arg as XPathNodeIterator; if (iter == null) { // if not iterator then it's a single item return(arg.ToString()); } if (ExtensionObjectConvert.IsEmpty(iter)) { return(""); } return(String.Join(separator, iter.Cast <XPathNavigator>().Select(n => n.Value))); }
public object avg(object args) { // fn:avg($arg as xs:anyAtomicType*) as xs:anyAtomicType? XPathNodeIterator iter = args as XPathNodeIterator; if (iter == null) { // if not iterator then it's a single item, return unchanged return(args); } if (ExtensionObjectConvert.IsEmpty(iter)) { return(ExtensionObjectConvert.EmptyIterator); } return(iter.Cast <XPathNavigator>().Select(n => n.ValueAsDouble).Average()); }
public object min(object arg) { // fn:min($arg as xs:anyAtomicType*) 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); } return(iter.Cast <XPathNavigator>().Min(n => n.TypedValue)); }
public object head(object arg) { // fn:head($arg as item()*) as item()? XPathNodeIterator iter = arg as XPathNodeIterator; if (iter == null) { // if not iterator then it's a single item return(arg); } if (ExtensionObjectConvert.IsEmpty(iter)) { return(ExtensionObjectConvert.EmptyIterator); } return(ExtensionObjectConvert.ToXPathNavigator(iter)); }
private object reverse(object arg) { // fn:reverse($arg as item()*) as item()* // TODO: XslCompiledTransform seems to reorder node-sets in document order XPathNodeIterator iter = arg as XPathNodeIterator; if (iter == null) { // if not iterator then it's a single item return(arg); } if (ExtensionObjectConvert.IsEmpty(iter)) { return(ExtensionObjectConvert.EmptyIterator); } return(iter.Cast <XPathNavigator>().Reverse().ToArray()); }
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))); }
public bool empty(object arg) { // fn:empty($arg as item()*) as xs:boolean return(ExtensionObjectConvert.IsEmpty(arg)); }