| 145 | } |
| 146 | |
| 147 | @Override |
| 148 | public final double dbl(final InputInfo ii) throws QueryException { |
| 149 | // try to directly retrieve inlined numeric value from XML storage |
| 150 | double d = Double.NaN; |
| 151 | final Kind kind = kind(); |
| 152 | if(kind.oneOf(Kind.TEXT, Kind.ATTRIBUTE)) { |
| 153 | d = data.textDbl(pre, kind == Kind.TEXT); |
| 154 | } else if(kind == Kind.ELEMENT) { |
| 155 | final int as = data.attSize(pre, Data.ELEM); |
| 156 | if(data.size(pre, Data.ELEM) - as == 1 && data.kind(pre + as) == Data.TEXT) { |
| 157 | d = data.textDbl(pre + as, true); |
| 158 | } |
| 159 | } |
| 160 | return Double.isNaN(d) ? Dbl.parse(string(), ii) : d; |
| 161 | } |
| 162 | |
| 163 | @Override |
| 164 | public final byte[] name() { |