(***********************************************************************)
(*
- Time-stamp: <Last modified on 2013-02-07 10:31:01 CET by Kim Nguyen>
+ Time-stamp: <Last modified on 2013-03-09 19:24:28 CET by Kim Nguyen>
*)
open Ast
absolute_path:
SLASH relative_path { $2 }
-| SLASHSLASH relative_path { (DescendantOrSelf, node, []) :: $2 }
+| SLASHSLASH relative_path { $2 @ [(Descendant true, node, [])] }
;
relative_path:
step { [ $1 ] }
| relative_path SLASH step { $3 :: $1 }
| relative_path SLASHSLASH step { $3
- :: (DescendantOrSelf, node, [])
+ :: (Descendant true, node, [])
:: $1 }
;
;
axis_test:
- AXIS COLONCOLON test { $1, $3 }
+ AXIS COLONCOLON test { let a, t = $1, $3 in
+ if a == Attribute && Utils.QNameSet.is_finite t then
+ (a, Utils.QNameSet.fold
+ (fun t a ->
+ Utils.QNameSet.add
+ (Utils.QName.add_attribute_prefix t) a)
+ t Utils.QNameSet.empty)
+ else
+ (a, t)
+ }
| test { Child, $1 }
| AXIS {
let _ = Format.flush_str_formatter () in