다음 코드 단편은 입니다. InvalidCastException입니다. 나는이 행동에 놀랐다왜 XPATH 개수 함수가 int 대신 double을 반환합니까?
static int XPathCount()
{
var doc = new XmlDocument();
doc.LoadXml(
@"<root>
<item>value1</item>
<item>value2</item>
<item>value3</item>
</root>");
var navigator = doc.CreateNavigator();
var expression = navigator.Compile("count(//item)");
var count = navigator.Evaluate(expression);
return (int) count;
}
은 그래서 XPATH specification에 수() 기능을 보면 :
카운트 함수는 인수의 노드 집합에서 노드의 수를 반환합니다.
지금까지 너무 좋아하지만하는 수은 무엇인가? 대답은 같은 사양에 있습니다
번호 (부동 소수점 숫자) 분명히이 XPATH 2.0에서 수정되었습니다
는 XS를 반환 : 여전히 정수 그러나 나는 이것에 대해 호기심.
왜 W3C가 count() 함수에 10 진수를 사용하기로 결정했는지 아는 사람이 있습니까?
나는 귀하의 요점을 보았습니다. 아마도 XPATH 사양은 형식과 관련된 가능한 한 중립적 인 시도를하고 가능한 모든 결과를 다루기 위해 Number를 정의했을 수도 있습니다. – michelgb