Skip to content
  1. Mar 02, 2008
  2. Feb 25, 2008
    • Ivan Shvedunov's avatar
      Important fixes & some new features. · cb747fe2
      Ivan Shvedunov authored
      Fixed :following, :preceding-sibling, :following-sibling and :namespace axes.
      Fixed contains() (what a shame! I made a mistake in the order of arguments).
      Fixed translate().
      Added get-node-id() and plx:generate-id() (same as generate-id() in XSLT).
      Added checks for number of arguments passed to XPath functions.
      Fixed a package-related problem in define-xpath-function/single-type.
      Fixed xnum-round.
      
      darcs-hash:f3bff21d76ef40b125506213bf44f04efd054b8d
      cb747fe2
  3. Feb 24, 2008
  4. Feb 10, 2008
  5. Dec 30, 2007
  6. Dec 09, 2007
    • david's avatar
      Added a type check for node-set in filtering. · 912622f0
      david authored
      Check explicitly for a node set when filtering, so that a proper XPATH-ERROR
      can be signalled instead of a type error.
      
      darcs-hash:1e69cad22497f3b225c3732fb768cad78ffbc5dc
      912622f0
  7. Dec 08, 2007
    • david's avatar
      Added an XPATH-ERROR condition class. · 7b539b0f
      david authored
      Helper function of the same name to signal this error.
      
      Exported XPATH-ERROR.
      
      Added another workaround for the non-error condition that parse-number
      signals.
      
      darcs-hash:868c30fb0b1fd42c9c394405fac7c9cacab3a832
      7b539b0f
  8. Dec 04, 2007
  9. Dec 02, 2007
    • david's avatar
      Fixed the error message for undefined functions. · db2500f6
      david authored
      Show the function name only, not the arguments.
      
      darcs-hash:d5291773e631e5521b40df8e0f01cf373c735e6a
      db2500f6
    • david's avatar
      * Reworked variable handling. · ee9a88b7
      david authored
        Reverted CONTEXT-VARIABLE-VALUE.
      
        Renamed ENVIRONMENT-VALIDATE-VARIABLE to ENVIRONMENT-FIND-VARIABLE,
        which now returns a closure rather than just a boolean.
      
        New exported macro WITH-VARIABLES for the LEXICAL-ENVIRONMENT.
        (And tests for that.)
      
      darcs-hash:4bf3773ca6bd46e449833192b823a08f248a9175
      ee9a88b7
  10. Dec 01, 2007
    • Ivan Shvedunov's avatar
      Some missing XPath funcs, code reorganization and minor bugfixes. · 54694b95
      Ivan Shvedunov authored
      Moved XPath parser to parser.lisp.
      
      Moved some of toplevel API to api.lisp.
      
      Added MAP-NODE-SET and DO-NODE-SET.
      
      Added proper unary minus handling.
      
      Added test cases for string representation of XPath in TEST-XPATH
      (previously TEST-XPATH/UNABBREVIATED).
      
      Made it possible to pass strings to compile-xpath.
      STRING-VALUE, NUMBER-VALUE, BOOLEAN-VALUE and NODE-SET-VALUE now can handle single nodes.
      Added XPATH-PROTOCOL:NODE-P.
      
      Compiler macro for EVALUATE now issues warning instead of error if EVALUATE
      is used outside lexical scope of (WITH-NAMESPACES (...) ...)
      
      Added some of missing XPath functions - substring(), true(), false(),
      boolean(), number()
      
      darcs-hash:973601a675f33d9ebcd85ef89b6270e702fbaa1d
      54694b95
  11. Nov 25, 2007
    • david's avatar
      new exported functions EVALUATE, FIRST-NODE, ALL-NODES · 3eea15e3
      david authored
      A new function EVALUATE is provided that...
        - automatically parses XPath strings.
        - also accepts sexps in the syntax (xpath (sexp-goes-here)).  (The special
          marker XPATH in the CAR is needed to distinguish literal strings from XPath
          strings.)
        - and accepts pre-compiled closures.  Users who want to use this function
          with a customized environment must pass precompiled closures.
      
      For the first two cases, the environment is defined lexically using the
      new macro WITH-NAMESPACES.
      
      The context argument to ALL-NODES can be either...
        - an actual context
        - or any other node understood by the XPath protocol, and will then
          be turned into a trivial context automatically
      
      A compiler macro on EVALUATE allows pre-compilation of closures at fasl
      load time.  (Macrolet tricks propagate the information from WITH-NAMESPACES
      into the compiler macro.  Thanks to chandler on #lisp for the tip.)
      
      darcs-hash:88c7a7985b99372e14071fb9eb8da0bc97d0b054
      3eea15e3
    • david's avatar
      applied parse-xpath-3.diff: · 738a5991
      david authored
      functions.lisp
              - new function XPATH:UNION for the | operator
                (not a keyword because not technically an XPath function)
      
      lexer.lisp
      	Lots of fixes.
      
      node-tests.lisp
      	- NODE-TEST-NAME
      	  Added the namespace URI as an optional second argument.
      	- NODE-TEST-NAMESPACE
      	  New, checks only the namespace and not the local name.
      	- NODE-TEST-PROCESSING-INSTRUCTION
      	  Added the name to check as an optional argument.
      
      types.lisp
      	- CONTEXT-VARIABLE-VALUE
      	  New generic function looking up variable values during
      	  evaluation.
      	- ENVIRONMENT
      	  New struct, basically a compilation-time context.
      	- ENVIRONMENT-FIND-NAMESPACE
      	  New generic function for prefix -> uri lookups
      	- ENVIRONMENT-FIND-FUNCTION
      	  New generic function for (local-name uri) -> function lookups.
      	- ENVIRONMENT-VALIDATE-VARIABLE
      	  New generic function that returns true if the variable is
      	  declared.
      	- TEST-ENVIRONMENT
      	  An environment that pretends to know about every namespace,
      	  function, and variable. For use only in parser tests.
      
      xpath.lisp
      
      	- MAKE-LOCATION-STEP
      	  Now accepts the list of predicates instead of just one
      	  predicate.
      	- COMPILE-PREDICATES
      	  helper function for make-location-step
       	- DECODE-QNAME, FIND-NAMESPACE
      	  New
      	- COMPILE-XPATH
      	    * New second argument `environment'.
      	    * For function calls, check if the function name is a string
      	      rather than a symbol, and if so, look it up in the enviroment.
      	    * New: variables
      	    * New: filters
      	- COMPILE-VARIABLE
      	  New
      	- COMPILE-NODE-TEST
      	  Split qnames.  And allow lists as node-tests to handle
      	  :namespace, named :processing-instruction, and pre-parsed :qname
      	- COMPILE-LOCATION-STEP
      	    * New second argument `environment'.
      	    * Accept multiple predicates.
      	- COMPILE-PATH
      	  New second argument `environment'.
      	- COMPILE-FILTER-PATH
      	  New
      
      axis.lisp
      	- new axis :namespace
      	- new axis :following-sibling
      	- new axis :preceding-sibling
      	- new axis :following
      	- new axis :preceding
      	- new axis :ancestor-or-self
      	and
      	- pseudo axis :root  -- FIXME: is this right?
      
      darcs-hash:828be75c0208ef166e480cfe33eb83b3ac57f285
      738a5991
    • david's avatar
      Ivan Shvedunov's XPath implementation · 1ed90069
      david authored
      darcs-hash:b96e13c8d54121d1fbfffc220ff442053e425942
      1ed90069