Commit Graph

250 Commits

Author SHA1 Message Date
michael
a8e4234aca * Patch from Graeme Geldenhuys to check for XMLDocument before typecasting it
git-svn-id: trunk@16443 -
2010-11-26 12:44:23 +00:00
sergei
b6c0948bb2 * unit xmlcfg.pp marked as deprecated.
git-svn-id: trunk@16307 -
2010-11-06 07:28:56 +00:00
sergei
b066395a2b * xmlread.pp: separated DOM-specific code into DoStartElement(); introduced FNameTable.
git-svn-id: trunk@16270 -
2010-10-31 02:23:42 +00:00
sergei
6cb9cdcc0d * xmlread.pp: maintain ID map at reader side, so it can do ID/IDREF validation without DOM.
* also don't allocate TForwardRef records for backward references, saves some ticks and bytes.

git-svn-id: trunk@16264 -
2010-10-30 15:18:44 +00:00
sergei
22f0692745 * xmlread.pp: since FIdRefs and FNotationRefs are never used at the same time (the former is used only while parsing root, the latter only while parsing DTD), simplify things a bit by replacing them with a single FForwardRefs.
git-svn-id: trunk@16259 -
2010-10-30 10:25:33 +00:00
sergei
b4aa087aad * xmlread.pp, implemented some c14n features: when parsing with Options.CanonicalForm=True, report all attributes as specified and drop superfluous namespace declaration attributes. Fixes level3/ls/canonicalform10 and level3/ls/canonicalform11.
git-svn-id: trunk@16253 -
2010-10-29 03:36:55 +00:00
sergei
d96e17da77 * xmlread.pp, fixed an issue introduced by combination of r16046 and r16172: assigning doc.DocumentType only after DTD has been completely parsed prevented inner reader from parsing 2nd+ level entity references in default attribute values. This went unnoticed because of no positive tests, and was detected only by examining negative test diagnostic, namely for not-wf-sa-079 and not-wf-sa-080.
git-svn-id: trunk@16248 -
2010-10-28 20:23:42 +00:00
sergei
4468f72f6c * xmlread.pp, added location information to TNodeData and got namespace-related errors reported at correct locations.
git-svn-id: trunk@16234 -
2010-10-27 22:42:01 +00:00
sergei
068d2fba37 * xmlread.pp, modified attribute parsing code to use DOM-independent data structures (third part)
* Namespace handling rewritten to fit into XMLReader's own data structures.
  * Remaining TDOMElementDef's replaced by TElementDecl.
  * Removed DoAttrText(), it has become obsolete.
  * Create objects that are needed for namespace processing only if actually doing namespace processing, reduces memory requirements.
  * Improved TAttributeDef construction.

git-svn-id: trunk@16230 -
2010-10-27 11:57:03 +00:00
sergei
4579226771 + New unit dtdmodel.pp containing DTD-related classes.
* TXMLNodeType, TNodeData and TAttrDataType moved to xmlutils.pp, so they can be shared between dom, xmlread and dtdmodel.
* TContentParticle class moved from xmlread.pp to dtdmodel.pp.
* dom.pp and xmlread.pp switched to DOM-independent representation of DTD element declarations and attribute defaults.

git-svn-id: trunk@16221 -
2010-10-25 15:26:29 +00:00
sergei
b585a6a1d0 * xmlread.pp, continued reducing DOM dependencies:
* TContentParticle only stores and compares a pointer to an element definition, a particular type of that definition doesn't matter - so change it to TObject.
  * In case of mixed content model, assign Type and Quantity to the root content particle, and process it the same way as element-only models.
  * While parsing, store entities in THashTable instead of TDOMNamedNodeMap.
  * Assign Prefix to element and attribute NodeData.

git-svn-id: trunk@16208 -
2010-10-23 18:20:49 +00:00
sergei
7e5ff8ca89 * xmlread.pp, modified attribute parsing code to use DOM-independent data structures (second part)
* ExpectAttValue() now builds both plain string value and first-level node chain.
  * Normalize() procedure moved to xmlutils.pp and made publicly available as BufNormalize.
  * ParseLiteral() cleaned of attribute-specific code; at this point it is clear it won't be used for parsing attributes.

git-svn-id: trunk@16186 -
2010-10-19 15:14:33 +00:00
sergei
e0d8556cae * xmlread.pp, modified attribute parsing code to use DOM-independent data structures (first part)
git-svn-id: trunk@16184 -
2010-10-18 20:46:35 +00:00
sergei
dfe1c0f228 xmlread.pp, r16175 caused a regression in level1/core/commentgetcomment; we should ignore comments in DTD, but not between DTD and root element. Fixed.
git-svn-id: trunk@16183 -
2010-10-18 20:19:32 +00:00
sergei
d248315ae4 * xmlread.pp, do some cleanup and get rid of FCursor field.
git-svn-id: trunk@16175 -
2010-10-16 22:56:55 +00:00
sergei
6cb12d0efc * xmlread.pp, doing progress with streaming API:
* correct handling of comments, PIs and (partially) DocumentType

git-svn-id: trunk@16172 -
2010-10-15 23:47:33 +00:00
sergei
d3bdf2577c * xmlread.pp, doing progress with streaming API:
+ state transitions needed to report start/end element events correctly
  + procedures for maintaining attribute data
  * excluded FCursor from attribute value parsing

git-svn-id: trunk@16161 -
2010-10-14 19:41:22 +00:00
mazen
b127fc154a * Fixed spell error revealed by lintian.
git-svn-id: trunk@16094 -
2010-10-06 20:33:57 +00:00
sergei
6cc206ac77 * xmlread.pp: started implementing the streaming API, aka XmlTextReader from .net world.
git-svn-id: trunk@16079 -
2010-10-05 07:35:00 +00:00
sergei
1dc083438e * xmlread.pp, renamed all parameters and local vars named 'Name', 'Prefix', 'BaseUri' and 'Value', so it becomes possible to add properties with these names to TXMLReader without duplicate identifier errors.
git-svn-id: trunk@16078 -
2010-10-04 15:41:47 +00:00
sergei
594919cc70 * dom.pp, fixed TDOMText.SplitText() to use custom allocation, so newly created node won't leak if initial node has no parent .
git-svn-id: trunk@16072 -
2010-10-01 11:05:30 +00:00
sergei
fd892533c3 * xmlread.pp, a bit better separation of DOM-specific and DOM-independent code in ParseComment() and ParsePI().
git-svn-id: trunk@16070 -
2010-09-30 15:30:49 +00:00
sergei
5808fd23c9 * dom.pp, moved remaining TDOMAttr-specific code from TDOMNamedNodeMap to TAttributeMap.
git-svn-id: trunk@16066 -
2010-09-29 23:10:58 +00:00
Jonas Maebe
8b0301409a + i386/iphonesim target for the new iPhoneSimulator in Xcode 3.2.4 and
later: the same as i386/darwin, except
      a) uses the non-fragile Objective-C ABI/runtime
      b) does not require stubs for direct calls/jumps (not required for
         i386/darwin under 10.6 and later either, but still generated
         there for backwards compatibility)
      c) only the same packages are enabled as for ARM/Darwin
      d) MacOSAll is compiled specifically for the iPhoneSimulator SDK
    This target also defines the symbol "darwin" apart from the target
    name "iphonesim" for source code compatibility reasons.

git-svn-id: trunk@16065 -
2010-09-29 21:56:47 +00:00
sergei
03b06dc7a1 * dom.pp, moved default attribute handling code from TDOMNamedNodeMap to TAttributeMap.
git-svn-id: trunk@16060 -
2010-09-28 22:46:05 +00:00
sergei
27948a5f06 sax_xml.pp: cleanup:
- remove duplicated code from constructor
- use CreateXXXBuf to create DOM nodes, eliminates temporary string vars.

git-svn-id: trunk@16049 -
2010-09-26 19:54:20 +00:00
sergei
3648247faf XML reader, forgot to pass current settings to the nested reader (although it doesn't seem to change test suite behavior).
git-svn-id: trunk@16048 -
2010-09-26 19:50:37 +00:00
sergei
347267dfe6 XML reader:
* Parse entities by creating another instance of TXMLReader. This is much more straightforward than saving/restoring context of the existing reader.
* Fixed version setting logic so that ReadXMLFragment procedures are now suitable to read entities:
 accept streams conforming to extParsedEnt [78], correctly read fragments into documents having version=1.1.

git-svn-id: trunk@16046 -
2010-09-26 04:50:55 +00:00
sergei
1d3a1e6691 * dom.pp, removed TDOMAttr.FOwnerElement field, storing owner element in FParentNode. This reduces memory requirements.
git-svn-id: trunk@16014 -
2010-09-19 16:46:35 +00:00
sergei
2786259d77 dom.pp:
* r15443 changed the node class with biggest instance size from TDOMAttr to TDOMEntity. Changed that in TDOMDocument constructor, too. Otherwise nodes created with TDOMEntity.CloneNode will leak (they cannot be inserted into tree).
* Do not restore default attributes during document destruction.
* Also added a general check that raises exception if someone tries to allocate from node pool during destruction.
* Fixed replaceChild() method: it was deleting node if that node was replaced by itself.
+ Test for replaceChild.

git-svn-id: trunk@16010 -
2010-09-19 14:11:20 +00:00
sergei
3bef71aaf9 * xmlread.pp, removed FRecognizePE field. Its functionality is replaced by checking other fields.
git-svn-id: trunk@15984 -
2010-09-14 12:53:55 +00:00
sergei
cc82844a9d * xmlread.pp: refactoring, no function chages:
* Renamed ParseElement to ParseStartTag to reflect its actual functionality
  * Changed ParseQuantity into function returning a enumeration type
  * Simplified TXMLDecodingSource.NewLine
  * Changed the main loop (ParseContent) so that multiple calls to DoText() are replaced by a single call.
  - Removed "if FCDSectinsAsText" branch in DoCDSect. It is obsolete since this case is handled in ParseContent.

git-svn-id: trunk@15975 -
2010-09-13 16:07:50 +00:00
sergei
06c1413fb0 * xmlread.pp, a misplaced assignment could cause a #13 character to pass non-normalized to #10 if it was the last character in input stream.
git-svn-id: trunk@15974 -
2010-09-13 07:07:53 +00:00
sergei
320f67eab2 xmlwrite.pp, htmwrite.pp: replaced inheritance by composition. TxxxWriter always writes to a TStream (or its descendant), and for text files we use a simple TStream-compatible wrapper.
git-svn-id: trunk@15755 -
2010-08-08 22:25:37 +00:00
sergei
1c7c97dc93 sax_xml.pp:
* Applied counterpart of sax_html.pp r15564, eliminating redundant wide-to-ansi conversions;
* AStart parameter of IgnorableWhitespace event should be zero, not 1;
* XML is case-sensitive, removed calls to lowercase();
* Accumulate token characters in FRawTokenText, then convert it all at once to SAXString. Without it, handling multi-byte encodings like UTF-8 was impossible, because it was converting by individual bytes which always resulted in errors. Provides a partial fix for Mantis #16732. Also provides a single location to insert a proper decoding procedure.

git-svn-id: trunk@15738 -
2010-08-08 05:13:45 +00:00
sergei
f138637678 xmlread.pp, moved decoder procedures to xmlutils.pp, so they can be reused by other code.
git-svn-id: trunk@15737 -
2010-08-08 03:27:31 +00:00
sergei
118f1d645b xmlread.pp:
- removed an unused field FDocNotValid
- optimized away a variable in ParseEndTag().

git-svn-id: trunk@15736 -
2010-08-08 02:47:04 +00:00
sergei
f39e793448 * Moved TWideCharBuf and associated functions from xmlread.pp to xmlutils.pp, so this stuff can be reused by other code.
git-svn-id: trunk@15718 -
2010-08-06 08:00:45 +00:00
sergei
e1eec8c687 - xmlread.pp, removed redundant 'var' modifiers from TStream arguments of less common used functions. This should have been done a long ago, as part of r11788.
git-svn-id: trunk@15717 -
2010-08-06 07:44:51 +00:00
sergei
1876fb1c74 XPath: now when predicate filtering is no longer dependent on axis, it becomes possible to use the same code for TStep and TXPathFilterNode. Inherited TStep from TXPathFilterNode, removed duplicating code.
git-svn-id: trunk@15654 -
2010-07-28 15:25:19 +00:00
sergei
ae7aef0861 XPath: reworked step processing:
* For ancestor and ancestor-or-self axes, added checks for attribute nodes similar to parent axis.
* For reverse axes, collect and filter nodes in 'natural' (i.e. reversed) order, and only then reverse order while adding to result node set. This is much simpler to implement.
* Fixed memory leak (not destroying TXPathFilterNode.FExpr)

git-svn-id: trunk@15652 -
2010-07-28 14:25:08 +00:00
sergei
22038d7db6 + XPath test suite, implemented possibility to use a specified context node instead of fixed root element.
* enabled expressions which start with a FilterNode.
+ added a test for ancestor:: axis of attribute.

git-svn-id: trunk@15650 -
2010-07-28 12:24:27 +00:00
sergei
c902b96673 * XPath, change parsing of function call so that function arguments are parsed before creating the function node. This way function nodes can validate their arguments at creation time.
* also changed function argument container type from TFPList to dynamic array.

git-svn-id: trunk@15641 -
2010-07-26 19:30:26 +00:00
sergei
5352b78c4a * XPath, fixed parsing of 'prefix:*' node tests:
o The prefix to resolve should not include following ':*' characters
  o NextToken changes CurTokenString, so NextToken must be after reading CurTokenString.
  o Added a test for that
* XPath test suite, fixed comparison of numeric result (it is quite tricky in presence of NaNs).

git-svn-id: trunk@15639 -
2010-07-26 16:35:35 +00:00
sergei
0f5795baaf XPath, use a perfect hash to recognize all possible keywords.
git-svn-id: trunk@15638 -
2010-07-26 13:49:46 +00:00
sergei
83711ff972 XPath improvements:
- Deleted TXPathLocationPathNode, it was too much overhead to store a single bit of information. The path root (if any) is now represented by TStep node with Axis=axisRoot.
* Changed TStep linkage from 'right' to 'left', this is consistent with the way of parsing  expressions and considerably simplifies evaluation.
* Fixed ParsePathExpr procedure so it no longer accepts empty/truncated expressions.

git-svn-id: trunk@15632 -
2010-07-24 23:15:35 +00:00
sergei
d44a1603db * TXPathScanner.ParseStep split into two functions in order to reduce complexity and improve readability.
* Also modified it so the data is accumulated in local vars, and resulting TStep objects are created only after the parsing is successfully complete.
* TXPathScanner.ParsePrimaryExpr: eliminated variable.

git-svn-id: trunk@15628 -
2010-07-24 03:21:40 +00:00
sergei
b4b83a7edb * HTML reader, attempt recovery from misplaced '<' characters (another part of Mantis #16916).
git-svn-id: trunk@15574 -
2010-07-15 04:54:14 +00:00
sergei
1a50f3ed26 * The fix in r15551 was not entirely correct. Must handle the case when string ends with a single whitespace.
git-svn-id: trunk@15570 -
2010-07-14 14:35:13 +00:00
sergei
7e2f713d09 * HTML parser: in case of malformed input, do not create attributes with invalid names (Mantis #16916).
* Along the way, eliminated one layer of useless converting strings from wide to ansi and back.

git-svn-id: trunk@15564 -
2010-07-14 13:54:09 +00:00