Jez Higgins
c35185a64c
add hasFunction to FunctionResolver interface
2010-02-20 13:03:22 +00:00
Jez Higgins
9d7384c8ef
fixed unused parameter warnings
2010-02-20 09:27:32 +00:00
Jez Higgins
4e29877ac1
initial implementation of function-available, currently returned only false
2010-02-19 23:21:30 +00:00
jez
427129f83d
refactored string sorting
2010-02-16 10:18:29 +00:00
jez
95c8185828
refactored numeric sort
2010-02-16 08:59:45 +00:00
Jez Higgins
613f99af9d
xsl:sort/@lang - still don't do anything with it, but now only output a warning rather than throwing an exception
2010-01-13 22:13:12 +00:00
Jez Higgins
b46b48d006
I think that's the last of the warnings
2010-01-11 09:28:48 +00:00
Jez Higgins
3dc2f255c7
silenced many more warnings
2010-01-11 09:02:17 +00:00
Jez Higgins
953e46ba92
another warning squashed
2010-01-10 22:59:33 +00:00
Jez Higgins
36a305d55b
fixed more warnings
2010-01-10 22:02:43 +00:00
Jez Higgins
2e82578767
more warnings silenced
2010-01-10 21:25:35 +00:00
Jez Higgins
74f8a55ed4
chmod -x *.hpp
2010-01-02 22:53:28 +00:00
Jez Higgins
181d5eab5c
normalize whitespace when extracting CDATA element names
2010-01-02 22:21:38 +00:00
Jez Higgins
29d425528d
popped quotes around the wrong thing
2010-01-02 22:20:13 +00:00
Jez Higgins
d7c3b7c260
reverted work on variables - will come back to it another time
2009-12-14 23:55:56 +00:00
Jez Higgins
5fa42997f4
make each variable its own little stack frame. i am, howver, going to back all this stuff out because I'm getting it wrong in some subtle but segfaulty way
2009-12-14 22:40:05 +00:00
jez
17e93705ae
redirect to DOMSink when evaluating variables. This wasn't being done for ResolvedVariables and so everything was exploding.
2009-12-14 14:20:12 +00:00
jez
3991f80eb2
increment changes with the aim of improviing performance of variables
2009-11-23 21:00:23 +00:00
jez
6785fd8944
litte bit more work on variable resolution, but train in v wobbly and it giving me a headache
2009-10-05 19:27:24 +01:00
jez
29f73f285b
When declaring a parameter, only create a new variable closure if a parameter
...
hasn't been passed.
2009-08-18 21:16:12 +01:00
jez
db940c9b78
Pass select by const ref not by value
2009-08-18 20:42:37 +01:00
jez
1f12f0a2f0
nodeset functions now use NodeSetXPathFunction base class
2009-07-13 09:24:26 +01:00
jez
428121bab4
moved string functions to use StringXPathFunction base class
2009-07-13 09:13:50 +01:00
jez
014ea05879
updated TO-DO to include various performance improvement ideas
2009-05-05 19:30:47 +01:00
jez
d681db69b2
Literal result element as stylesheet - done
2009-04-28 20:59:52 +01:00
jez
9f6fbba927
removed left over stuff for foreign element handling
2009-04-28 09:00:05 +01:00
jez
7b1c5c9541
started on literal result elements as stylesheet
2009-04-28 08:57:14 +01:00
jez
bf5799eefd
pulled foreign element handling - fixed parameter order inconsistency
2009-04-24 19:02:14 +01:00
jez
6081659b71
neatening
2009-04-24 15:54:13 +01:00
jez
62b24c144d
Resolved cdata-section-element names so that unprefixed names are in the default namespace. Merge multiple xsl:output/@cdata-section-elements
2009-04-07 13:39:31 +01:00
jez
b70e521d79
hooked up cdata-section-elements to the output
2009-04-07 10:29:56 +01:00
jez
f6dfa127a1
OK, forget what I said about state machines, let just hack in some flags.
...
Initial work on CDATA section output. If I manually populate the set of
cdata section elements, everything looks great, so I just need to hook that up.
Added operator< to QName so I pop it in a std::set.
2009-04-03 19:01:26 +01:00
jez
89f6585d65
pulled output into its own file
2009-03-31 20:06:06 +01:00
jez
f373a1d01b
some work on implementing cdata section output, then realised it would probably be easier if I dropped a state machine in there
2009-03-31 20:00:26 +01:00
jez
7dd3cb4ab4
blow up if we see an extension prefix declaration
2009-03-31 09:15:32 +01:00
jez
94d5a26c6c
skip test for two arg version of document() - not yet implemented
2009-03-27 08:30:28 +00:00
jez
83cd0cd15b
working on the IdKey match pattern - currently crashes
2009-03-17 21:08:26 +00:00
jez
9f4c8d213a
xsl:stylesheet can have an id attribute
2009-03-17 19:07:00 +00:00
jez
67e8a31360
allow whitespace within xsl:output
2009-03-17 09:07:22 +00:00
jez
8f97c52f8a
added copy constructor to KeyFunction::UriMapper - some compilers want to copy, while the cooler ones can optimise that copy away :)
2009-03-04 20:34:30 +00:00
jez
b01c03f591
exclude attributes in the XSL namespace from literal elements
2009-03-03 18:15:34 +00:00
jez
b6c83a0028
corrected key population when use is a union
2009-03-03 08:12:26 +00:00
jez
9ddbb95491
implemented nodeset version of key()
2009-03-03 07:58:29 +00:00
jez
88150c062e
use NodeSet.to_document_order instead of sort
2009-03-03 07:58:14 +00:00
jez
d7602d5a7d
Windows compatibility fix - it defines min as a macro, so use bracket function call to defeat it
2009-02-26 14:38:23 +00:00
jez
4af8e6472e
keys stored on a per-document basis, as per the end of rec 12.2
2009-02-26 10:30:16 +00:00
jez
8cb5109ac1
keys now look something up. yay!
2009-02-26 10:16:49 +00:00
jez
ff835d03c0
Pass inscope namespaces to key functions so it can resolve key names at runtime
...
key() now works (bar nodeset argument)
just need to do the key lookup
2009-02-26 09:32:55 +00:00
jez
9b70ca5187
rather large commit, propagating the QualifiedName changes through the NamespaceSupport and Tracker, simplifying item names in XSLT and so on.
2009-02-24 12:21:35 +00:00
jez
4030057c74
propogating recent edits through
2009-02-23 19:43:20 +00:00
jez
297345f3c3
started filling out xsl:key and keys. need to do a bit of refactoring around QNames now, to make everything a little easier
2009-02-18 09:36:41 +00:00
jez
b22708f126
s/XPathValuePtr/XPathValue/
2009-02-18 08:37:16 +00:00
jez
0b2bb658b9
Skinned up skeleton implementation of key() function. Doesn't do anything yet though :)
2009-02-18 08:37:00 +00:00
jez
4d9c2a485a
started work on xsl:key/key()
2009-02-16 22:10:00 +00:00
jez
c7a3f9be3f
improved validation on template priority value
2009-01-03 21:41:26 +00:00
jez
e944732d82
detects loops in imports as well as includes
2008-12-29 22:29:27 +00:00
jez
8c65657d84
added currentBase - handy for debugging
2008-12-29 22:29:04 +00:00
jez
73a90f502d
catch include loops
2008-12-29 21:14:44 +00:00
jez
ab4f951840
fixed top level variable precedence
2008-12-02 11:26:58 +00:00
jez
0a2220dbb0
added operator<< back in for debugging
2008-12-02 11:26:28 +00:00
jez
cd97e2aa58
Correct top level variable declarations
2008-11-25 12:49:25 +00:00
jez
38d2783be3
Finally! Determining import precedence for templates is properly correct.
2008-11-25 12:27:33 +00:00
jez
fe40d482f5
Aha! The push/pop precedence thing is, of course, wrongly wrong. Need to assign the new precedence at the point we encounter the xsl:import, then set that precedence as current when we actually load it. I'll sort that out next time, because it's bedtime for programmers now.
2008-11-24 23:11:22 +00:00
jez
538a8969ad
seed the Precedence next generation differently, so can pop as well as just push precedence stack as we unwind imports
2008-11-24 22:26:58 +00:00
jez
6f39b28daa
Reworked current_generation stuff to use the templates' Precedence instead of a plain old int
2008-11-24 22:05:16 +00:00
jez
f610d739fe
More work on rejigging precedence.
...
Templates are now constructed with their precedence.
Variables are too, with a tweak to allow for the immediate evaluation of non-topl-level params and vars.
The execution context now no longer needs to track variable precedence, which is good because it will be getting it wrong anyway.
Corresponding simplifications follow to compliation context.
2008-11-19 17:26:07 +00:00
jez
8d0ce36da3
Rework variable handling to use the Precedence class. Currently it has the same (incorrect) behaviour as before, but it's all part of moving to towards (what I hope will be) proper import precedence handling.
2008-11-05 22:55:53 +00:00
jez
e8c0aaa416
Started work on refactoring precedence handling. Need to try and preserver the tree shape it forms, rather than a simple case of monotonically increasing precen
...
I mean decreasing precedence.
2008-11-05 02:57:18 +00:00
jez
2b2c09b1f3
Took out unparsed-entity-uri(). Not having it is better than have a neutered version.
2008-11-05 02:55:44 +00:00
jez
6c8a3e8404
hmm, I'll be needing this to make the previous checkin actually work
2008-11-05 02:54:49 +00:00
jez
b74514bc58
Shuffled around the Stylesheet class. Stylesheet is now the public face, while CompiledStylesheet is what gets chucked around internally.
2008-11-05 01:33:28 +00:00
jez
f74170e268
In XPath numbers do not have leading +, so, while '-1.5' converts to -1.5,
...
'+1.5' converts to NaN. Weird and counter-intuitive perhaps, but it's there
in the spec.
Sort now sets context node appropriately, so current() works in sorting
expressions.
2008-11-03 22:19:59 +00:00
jez
57f793ccc8
provided null implementation for unparsed-entity-uri
2008-10-27 22:20:49 +00:00
jez
4e418a8622
Implemented generate-id function
2008-10-27 19:13:47 +00:00
jez
04de9f2b60
Throw exception on xsl:sort lang not on order. Oops.
2008-10-27 14:26:20 +00:00
jez
7f99fa0b1e
output warning message now directed to the message_sink
2008-10-21 22:53:00 +01:00
jez
ea9d34c7d0
Validates xml:space values. Attributes in the xml namespace now returned too
2008-09-19 09:03:19 +01:00
jez
d3f42542ad
Updated template handler to use the attribute validator
2008-09-19 09:03:19 +01:00
jez
1ad8594aad
updated attribute validation to allow attributes in the xml namespace
2008-08-09 21:03:15 +01:00
jez
3511768691
was evaluating select expression twice - there was no need
2008-08-09 17:03:02 +01:00
jez
0aeeb9c1fb
Don't suppress element namespace prefixes or attributes which are in the
...
XSL namespace.
2008-08-08 22:46:18 +01:00
jez
468d401865
converted tabs to spaces
2008-08-08 22:45:53 +01:00
jez
363a413a53
When running stylesheet, resolve variable values straightaway. This flushes out unresolved references and so on, although only in templates which are actually run.
...
Added several more test cases.
2008-08-06 12:34:35 +01:00
jez
fc2a67619b
Corrected spelling of precedence. I have no idea why I had it wrong in the first place, it just seems to be what comes out of my fingers
2008-08-06 12:07:59 +01:00
jez
b187cc1667
Removed use of boost:ptr_vector. Turns out that std::vector<boost::ptr_vector<something> > won't compile.
...
Also see http://sourceforge.net/mailarchive/message.php?msg_name=2103b1960807291110y5f0063eaqb4c855f5aa56974e%40mail.gmail.com and discussion for bonus reason.
2008-08-06 11:48:06 +01:00
jez
843631092c
Resolve top level variables, to make sure they are properly defined.
...
Variables within templates are not resolved in this way unless they are actually used.
2008-08-05 22:17:08 +01:00
jez
b559feb7be
Added several more variables tests, related the namespace prefixes
...
fixed internal qname resolution - 2.4 says unprefixed names are not in the default namespace
fixed xsl:element - unprefixed names, when no namespace uri is supplied are in teh default namespace
2008-08-05 22:03:33 +01:00
jez
72e8decc76
added some precedence tests
2008-08-05 20:35:28 +01:00
jez
2667963142
Top level variables are now handled according to import precedence.
2008-08-05 18:29:18 +01:00
jez
538fe00271
whitespace changes
2008-08-05 15:32:40 +01:00
jez
441be1bbf2
attribute and elements now form there own variable scope.
2008-08-03 17:11:27 +01:00
jez
1ac9440433
reject variables/params which have both a select attribute and text content
2008-08-02 21:58:20 +00:00
jez
d357f70405
detect circular references and throw exception
2008-08-02 21:41:44 +00:00
jez
189ea0a33e
corrected xsl:stylesheet attribute validation
2008-08-01 19:42:37 +01:00
jez
53c647c1a1
Changed default text handling. Text containing only whitespace is now output, where previously it was suppressed.
...
All Modes tests now pass.
2008-08-01 19:33:52 +01:00
jez
6a2101d6cb
Verify qNames when processing.
2008-08-01 19:20:28 +01:00
jez
3a3f5d4b32
Validate xsl:stylesheet attributes properly
2008-08-01 19:19:49 +01:00
jez
1431e900e9
throw error if transform is run with no input
2008-06-04 20:30:36 +00:00
jez
5d7f3364ba
Visual Studio, how I curse your useless warning C4800
2008-05-28 08:45:25 +00:00
jez
71b7af819f
xsl:sort - blow up if we get a lang attribute
2008-01-19 22:45:48 +00:00
jez
7bd88a7bbe
2007-12-25 22:23:25 +00:00
jez
0850f50269
tweaking document order across documents - not for any better reason than making a test case pass
2007-12-25 21:56:28 +00:00
jez
2e6c372933
hacked up a ncname test, although it's not working at the moment and I'm tired and can't think
2007-12-22 22:21:26 +00:00
jez
cdac22542e
added type() to XPath expressions. I need this to allow XSLT match patterns to be rewritten properly - see http://www.jezuk.co.uk/cgi-bin/view/arabica/log?id=3546 - but it will also be useful for compile time checking (should I get sufficiently keen :)
2007-12-18 23:03:16 +00:00
jez
e659f3cce4
changed scope of StackFrame for apply templates
2007-11-26 23:17:11 +00:00
jez
213934528b
xsl:stylesheet now allows top-level elements in a foreign namespace
2007-11-23 00:07:08 +00:00
jez
7c491700d3
disallow pcdata ahead of xsl:param
2007-11-22 23:02:08 +00:00
jez
6425632f01
blow up if QName is bad
2007-11-22 22:36:47 +00:00
jez
4ed4928695
check xsl:for-each selects a node-set, I suspect it should be able to diagnose this at compile time but it at least it fails :)
2007-11-22 21:54:51 +00:00
jez
c7c0c3d36c
xsl:processing-instruction shouldn't allow xml as the name
2007-11-22 21:24:17 +00:00
jez
cdebc3d128
moved namespace and function resolver into compilation context. disallowed current() in match patterns
2007-11-22 19:24:18 +00:00
jez
375a2d584f
no longer expose xpath compiler directly during XSLT compilation
2007-11-22 17:50:25 +00:00
jez
95857fc467
detect duplicate variable and parameter names
2007-11-21 22:35:04 +00:00
jez
341d3db1ac
reworked stylesheet compiler and inclusion to trap illegal elements as xsl:stylesheet's children
2007-11-21 22:34:15 +00:00
jez
a9a5858300
working on detecting illegal xsl:stylesheet children - including is currently broken
2007-11-20 23:12:08 +00:00
jez
a0083c14d2
''
2007-11-19 22:11:05 +00:00
jez
0d385d1ab2
xsl:call-template throws if it can't find a matching template
2007-11-16 23:11:39 +00:00
jez
a9d7e1dcdd
verify xsl:sort attribute values
2007-11-16 23:10:41 +00:00
jez
7962545efb
Blow up if unknown child element encounter
2007-11-16 22:27:21 +00:00
jez
308cde7df7
xsl:templates - make sure any mode attribute is not empty
2007-11-16 22:05:42 +00:00
jez
bfe132b8a5
ensure xsl:choose has at least one xsl:when
2007-11-16 22:03:47 +00:00
jez
7b5f83ee43
fixed for empty comment
2007-11-11 21:31:49 +00:00
jez
a1c71b3625
xsl:message can contain an xsl:message - now handled properly
2007-11-11 21:31:10 +00:00
jez
68a6d52d11
don't output attributes in the xsl namespace or declare the namespace itself
2007-11-08 23:05:46 +00:00
jez
2053c94f4a
Use std::stable_sort instead of std::sort. When xsl:sort specifies a numerical sort, but you've got some string data in there we need to maintain the relative of that string data. This is the first time I've actually used std::stable_sort. I will mark it down in my big book of programming accomplishments.
2007-11-03 01:55:20 +00:00
jez
2231423e33
escape naughty text when outputting processing instructions and comments
2007-11-02 21:55:50 +00:00
jez
82f22d9dd3
changes to variable scoping in xsl:for-each, xsl:if, and xsl:choose.
2007-11-01 22:28:20 +00:00
jez
adbdb31f65
passed parameters are now unpassed when they aren't needed any more, removing them from the current stack frame. that may not match you idea of what a stack frame actually is (mine too, if I'm honest) but it's a straightforward change to fix a bug
2007-10-26 23:21:21 +00:00
jez
0167bd53c1
XSLT: template mode is now a QName
2007-10-26 19:12:27 +00:00
jez
b45e512845
XSLT: template names are now QNames
2007-10-26 12:28:48 +00:00
jez
3e246cb85a
xsl:apply-imports - params are not passed on through an xsl:apply-imports call
2007-10-25 22:08:31 +00:00
jez
af3ebfde60
s/XPathExpressionPtr/XPathExpression/g
2007-10-25 20:42:00 +00:00
jez
f6b2ed4966
OK, I think that's it. XPathValue is now your man. Existing code using XPathValuePtr should still work, but new stuff should use XPathValue
2007-10-22 17:42:50 +00:00
jez
6e2f594dc9
more reworking on XPathValuePtr -> XPathValue. XPathValue contains rather than derives from boost::shared_ptr. Added operator== so can still compare to 0 to see if the value is null or not.
2007-10-22 14:10:49 +00:00
jez
3f156c9fcf
reworked MatchExpr so that it doesn't expose its inner XPathExpression
2007-10-14 20:06:27 +00:00
jez
889305618e
fixes for older gcc
2007-09-28 08:30:16 +00:00
jez
63e18542a8
Fix for GCC on tiger
...
see http://sourceforge.net/mailarchive/forum.php?thread_name=m2sl5p4o2a.fsf%40gmail.com&forum_name=arabica-devel
2007-09-08 08:16:24 +00:00
jez
bbcf3e1001
all SAX classes now take both string_type and string_adaptor. everything builds through. tests pass
2007-09-06 18:54:02 +00:00
jez
a76b137b60
removed basic_ prefixes from SAX classes, removed typedefs
2007-09-05 12:57:07 +00:00
jez
7cf3897061
renamed all .h to .hpp
2007-09-04 22:55:47 +00:00
jez
83c34592f3
2007-08-25 11:51:29 +00:00
jez
ccde3a8404
pass through prefix mappings too, so we pick up the namespace declatations in included docs
2007-08-25 09:33:11 +00:00
jez
320344dfec
set base URI correctly on included stylesheets, while also respecting xml:base (like Saxon, but not like msxml and xalan, ner ner)
2007-08-24 12:37:32 +00:00
jez
70910a56de
allow non xsl elements as children of xsl:stylesheet
2007-08-24 08:52:12 +00:00
jez
9d70b5c1c0
now handles document('')
2007-08-24 08:51:31 +00:00
jez
d63b9a504c
make document(url) respect base URI
2007-08-23 13:55:06 +00:00
jez
f036ba1b64
pulled out stylesheet parser into a seperate class
2007-08-22 12:38:20 +00:00
jez
e95b455b83
check select returns a node-set
2007-08-22 12:23:38 +00:00
jez
1108d7f5de
whitespace changes
2007-08-22 12:22:57 +00:00
jez
d30bba750e
merged with mangle-dev branch
2007-07-19 17:01:42 +00:00