3

次のコード フラグメントは、InvalidCastExceptionを生成します。

    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;
    }

この動作に驚いたので、count()関数をXPATH 仕様に調べます。

count 関数は、引数 node-set 内のノードの数を返します。

ここまでは順調ですが、数字とは何ですか? 答えは同じ仕様にあります。

数値 (浮動小数点数)

どうやらこれはXPATH 2.0で xs:integer を返すように修正されたようですが、私はまだこれに興味があります。

W3C がcount()関数に 10 進数を使用することにした理由を知っている人はいますか?

4

2 に答える 2