public static double ToDouble(XPathItem item)
{
XsltLibrary.CheckXsltValue(item);
if (item.IsNode)
{
return(XPathConvert.StringToDouble(item.Value));
}
Type itemType = item.ValueType;
if (itemType == StringType)
{
return(XPathConvert.StringToDouble(item.Value));
}
else if (itemType == DoubleType)
{
return(item.ValueAsDouble);
}
else
{
Debug.Assert(itemType == BooleanType, $"Unexpected type of atomic sequence {itemType}");
return(item.ValueAsBoolean ? 1d : 0d);
}
}