(module ddo-sxpath-lolevel ( ;;; ddo-axes.scm ;;; ;; Miscellaneous helpers ddo:list-last ddo:attr-child ddo:attrs-and-values ddo:discard-attributes ;; XPath axes for location steps not involving position-based predicates ddo:ancestor ddo:ancestor-or-self ddo:attribute ddo:child ddo:descendant ddo:descendant-or-self ddo:following ddo:following-sibling ddo:namespace ddo:parent ddo:preceding ddo:preceding-sibling ddo:self ddo:following-single-level ddo:following-sibling-single-level ddo:parent-single-level ddo:preceding-single-level ddo:preceding-sibling-single-level ;; XPath axes for location steps probably involving position-based predicates ddo:ancestor-pos ddo:ancestor-or-self-pos ddo:child-pos ddo:descendant-pos ddo:descendant-or-self-pos ddo:following-sibling-pos ddo:parent-pos ddo:preceding-sibling-pos ddo:following-single-level-pos ddo:following-sibling-single-level-pos ddo:parent-single-level-pos ddo:preceding-single-level-pos ddo:preceding-sibling-single-level-pos ;;; ddo-txpath.scm ;;; ;; Comparison for nodesets ddo:nset-contained? ddo:nset-equal? ;; Different cases of nodeset filtering ddo:pos-result-forward? ddo:pos-result->nodeset ddo:location-step-pos ;; Implementation for location step for the other cases ddo:location-step-non-intersect ddo:location-step-non-pos ;; Implementations for FilterExpr ddo:filter-expr-general ddo:filter-expr-non-pos ddo:filter-expr-special-predicate ;; Uniting context-sets, preserving distinct document order ddo:all-contexts-in-doc ddo:unite-2-contextsets ddo:unite-multiple-context-sets ;; Optimizing special predicates like [position()=1] and the like ddo:list-tail ddo:list-head ddo:list-ref ;; Checks for a special structure of the predicate in its AST representation ddo:check-ast-position? ddo:check4ast-number ddo:check-special-predicate ;; Some simple rewrites for XPath AST ddo:check-ast-desc-os? ddo:rewrite-step* ;; Optimization for deeply nested predicates ddo:generate-pred-id ;; Search for predicate values ddo:get-pred-value ddo:get-pred-value-pos ddo:get-abs-lpath-value ;; Construct predicate values ddo:construct-pred-values ddo:construct-pred-values-pos ;; ...Some procedures that look like "internal" helpers omitted... ;; XPath AST processing ddo:ast-axis-specifier ddo:ast-location-path ddo:ast-absolute-location-path ddo:ast-relative-location-path ddo:ast-step ddo:ast-step-list ddo:ast-predicate ddo:ast-predicate-list ddo:ast-expr ddo:apply-ast-procedure ddo:ast-or-expr ddo:ast-and-expr ddo:ast-equality-expr ddo:ast-relational-expr ddo:ast-additive-expr ddo:ast-multiplicative-expr ddo:ast-union-expr ddo:ast-path-expr ddo:ast-filter-expr ddo:ast-variable-reference ddo:ast-literal ddo:ast-number ddo:ast-function-call ddo:ast-function-arguments ;; Highest level API functions ddo:api-helper ddo:ast-location-path ddo:ast-expr ddo:ast-expr ddo:xpath-expr ddo:sxpath ddo:txpath) (import chicken scheme) (use sxpath-lolevel xpath-parser context-sxpath-lolevel) (define (sxml:xpointer-runtime-error . text) (error "XPath/XPointer runtime error: " text)) (include "chicken/common.scm") (include "sxml-tools/ddo-axes.scm") (include "sxml-tools/ddo-txpath.scm"))