forked from benibela/xidel
-
Notifications
You must be signed in to change notification settings - Fork 0
/
changelog
159 lines (127 loc) · 9.74 KB
/
changelog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
Some important changes:
--------Xidel 0.9.9 --------
(under development)
- support 99.6% of XPath/XQuery 3.1, for example ? operator, => operator, map:/array: functions, string constructor
- support some XPath 4.0 syntax, that is: extended ? operator, -> operator, otherwise operator, for member, functions: some, all, identity, characters, replicate, map:filter, index-where, is-NaN
- --json-mode option to switch between XPath 3.1 or JSONiq syntax for JSON processing, or (default) a mix of both
- New extension functions:
* x:request-decode to parse the parameters of a HTTP request
* inner-text to get the visible text from a HTML page (no full CSS support)
* matched-text for use in pattern matching (this replaces the text() function. stop using text() in patterns. text() is now deprecated and will be replaced by the standard ./text() kind test)
* new behaviour for form() when building an HTTP request to submit a HTML <form> element:
The <form> element has become optional and defaults to the first <form> element on the current webpage.
Additional values can be given as sequence, and each item of the sequence is sent separately, for example, {"key":(1,2)} sends key=1&key=2 and {"key":()} sends nothing for that key.
Handles rarer elements like image buttons or _charset_ input elements.
* x:replace-nodes to replace nodes (replacing the deprecated pxp:transform function)
- --in-place option to override the input file with the output
- <json> element in multipage templates to download JSON data
- default whitespace normalization is disabled by default
- set implicit timezone from local time
- options for HTTPS certificates and enable validation by default
- improved parsing and serialization: faster, options for x:serialize-json; do not escape &#nbsp; for XML/HTML
- improved error messages
- reduced memory usage
- compiled with newer FreePascal
--------Xidel 0.9.8 --------
(2018-04-02)
- Cookie handling follows RFC 6265 rather than sending all cookies to all servers.
- add t:siblings-header/siblings elements to pattern matcher to match certain element siblings regardless of their ordering (e.g. table columns).
- add functions x:call-action, x:has-action, x:get-log, x:clear-log to give programmatic access to multipage templates and variable changelog.
- add --module, --module-path parameters to load XQuery modules into (xpath) queries and properly resolve relative paths for module imports.
- fix system(), file:exists, file:move (override), file:path-to-uri on Windows
- further minor bug fixes and performance improvements
--------Xidel 0.9.6 --------
(2016-11-20)
* add function x:request for HTTP or follow-like requests inside a query
* new functions: x:argc, x:argv, x:integer, x:integer-to-base
* fix that entities were not decoded, if --output-encoding was not set
* better default encoding settings when converting between Windows terminal encoding and utf8 for piped files
* a new JSON parser with two distinct modes: input formats json/json-strict for accepting/rejecting invalid JSON
* JSON output is prettified.
* An xquery version declaration disables all extension unless a version code like "3.0-xidel" or "3.0-jsoniq" is used. #!xidel in the first line is ignored, so it can be used for executable XQuery scripts.
* various fixes, performance improvements and internal restructuring
--------Xidel 0.9.4 --------
(2016-06-08)
* completes the support for XQuery 3.0 and XPath 3.0, e.g. functions format-*, math:* functions
* uses a new underlying regular expression engine, FLRE, which supports Unicode, \p,\c,\i character classes and is supposed to be extremely fast
* stricter error conditions, invalid XPath queries that were previously evaluated are now rejected, for example
in regular expressions (?i) or \b, (1 + if(..) then ...) instead of (1 + (if(..) then ...)), gYear("123") instead of gYear("0123")
* this improves the XQuery Test Suite conformance and it passes basically 100% of the XPath 2 tests and over 99.5% of the XQuery 3 tests
* supports the EXPath file module to write or read local files
* custom functions: random($max), random-seed(), x:product($seq)
* new multipage template statements: <try><catch>, <else>
* the error raising HTTP codes are now customizable
* the headers of the last HTTP request can be accessed via $headers
* improved debugging facilities: Evaluation tracing, colored output, improved error messages
* the default data model for primitive types is now XML Schema 1.1 and Unicode 8.0 conformant
* boolean operations are short-cut evaluated
* --quiet/-q was renamed to --silent/-s
* check for XIDEL_OPTIONS environment variable
* various fixes and performance improvements
--------Xidel 0.9--------
(2015-06-28)
* support of more XQuery 3 expressions and functions:
- anonymous functions, higher order function, function references, function tests
- new flwor clauses: group by, tumbling and sliding window, count, allowing empty
- try+catch expressions
- URI qualified names, e.g. Q{http://www.w3.org/2000/xmlns/}foo instead xmlns:foo
- fn:unparsed-text, parse-xml, environment-variable, path, round#2, string-join#1, fn:serialize ...
* change output format of variables, type annotations, line separators and stderr-information
* add support for multipart form requests and file uploads via a --form parameter
* Add custom functions pxp:transform and pxp:request-combine
* fix some issues with non ascii characters in cli arguments
* fix raw data/url after --follow=... arguments and multiple --follow with form requests
* fix some HTML parsing bugs
* fix a large number of XPath/XQuery compatibility bugs.
--------Xidel 0.8.4--------
* implementing all syntax extensions described in my Balisage talk:
- adding pattern matching in let, for, typeswitch expressions
- different matching modes for attributes
* support for custom headers on the command line
* can import environment variables
* changed html encoding detection to give content-type highest priority
* fix nested forwarding in recursive calls
* fix crashes/exceptions
--------Xidel 0.8--------
* improved JSONiq extension support
* updated to the new 1.0.3 standard. Most important: () operator to list object keys / unbox arrays, {| .. |} syntax for object merging, relaxed behaviour on sequences
* changed my dot notation to behave like the dot operator in JSONiq standalone, i.e. disabled the $var.property syntax, but added $var."property"
* fix object with keys containing a dot (.)
* fix parsing of null in json input
* Use arbitrary precision arithmetic for all numeric operations
* Some minor XPath/XQuery 3 syntax: ! and || operators, and switch statement
* new elements in multipage template: <if>, <choose>, <when>, <otherwise> similar to XSLT, <s> to evaluate short XQuery expressions like in singlepage templates
* allow template:optional flag on all template elements
* improved html form/url handling: input elements can be passed to pxp:form to create their url encoded post data, uri-decode/uri-encode/uri-combine functions to modify urls, resolve-html function that resolves references in html elements (e.g. @src when passed <img>) to the base uri
* more := shenanigans: $var[] := appends to sequences, $sequence[index] := assigns to sequence elements, $array(index) := assigns to array elements, $var(property) := assigns to object properties. Can be combined, so e.g. $array(index)[] inserts in arrays. Assigning () removes elements
* handle <base>-Element for resolving relative links
* Handle hex encoded password in urls
* other minor improvements and bug fixes
--------Xidel 0.7--------
* Improved handling of extract/follow command line chains:
Following occurs in depth-first-search
Brackets [ ] can be used to group arguments together (e.g. [ -f //a -e //title ] to read the titles of all pages linked on the current page, without changing the current page)
* The old json/xml output formats are now called json-wrapped and xml-wrapped
* Added html and xml output formats, which will just print the elements in their format
with the respective headers
* Added bash output format to export the variables to the shell (e.g. eval $(xidel --output-format bash ...))
* Fix a few xml/html parsing and serialization bugs (e.g. added closing tags for <link>)
* Added an option to print elements as html, instead as xml
* Added support for JSONiq: e.g. object syntax {"a": 123}("a"), arrays [10,20,30](1), the JSONiq jn:* functions,
additional pxp:json() and pxp:serialize-json functions to parse/serialize JSON
* Added outer-html, inner-html functions to the XPath engine which will serialize the element
in a string
* The syntax extension of variable inclusion in strings like "$foo;" was replaced by prefixed strings x"{$foo}", the regex extraction function pxp:filter was renamed to pxp:extract, to avoid confusion with the XQuery 3 fn:filter function
* Added support for different http request methods (e.g. PUT), basic authentication, allow arbitrary ports
* Added a system function to run arbitrary commands, a $raw variable containing the raw data of the current page
* Improved detection of CSS/XPath/XQuery kind expressions, also added --css, --xpath, --xquery parameters to easily bypass the detection
* Various other changes
--------Xidel 0.6--------
* Full XQuery 1 support (except XML schema and static type checking, but these are XQuery optional features)
* Added a match function to perform pattern matching between XML documents
* Added a form function to convert a html form in a http request
* Handle '-single quotes in Windows command line
* Support for Windows console OEM encoding
* Fix a few XPath 2 interpreter bugs (e.g. wrong namespace for functions)
--------Xidel 0.5--------
Initial release