|
1 // Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies). |
|
2 // All rights reserved. |
|
3 // This component and the accompanying materials are made available |
|
4 // under the terms of "Eclipse Public License v1.0" |
|
5 // which accompanies this distribution, and is available |
|
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html". |
|
7 // |
|
8 // Initial Contributors: |
|
9 // Nokia Corporation - initial contribution. |
|
10 // |
|
11 // Contributors: |
|
12 // |
|
13 // Description: |
|
14 // CXmlLibrary is an interface class for a client to access the Xml parsing and validation |
|
15 // services provided by the library. In general, CXmlLibrary should be concidered as a base |
|
16 // class for a library which implements the language specific bits of an Xml-language parser. |
|
17 // USAGE: |
|
18 // - Construction of the class using NewL or NewL |
|
19 // - Pass data to parsing by calling ProcessDataL. |
|
20 // - When all data has been parsed, call CommitL |
|
21 // |
|
22 // |
|
23 |
|
24 #ifndef __XMLLIB_H__ |
|
25 #define __XMLLIB_H__ |
|
26 |
|
27 // System includes |
|
28 // |
|
29 #include <e32base.h> |
|
30 #include <wapengstd.h> |
|
31 |
|
32 // CONSTANT DEFINITIONS |
|
33 // |
|
34 |
|
35 /** |
|
36 ID for the root node attribute that contains the buffered document in case no DTD was available |
|
37 @publishedAll |
|
38 @deprecated |
|
39 */ |
|
40 _LIT(KXmlLibBufferedDocumentAttribute, "XmlLibBufferedDocument"); |
|
41 |
|
42 /** |
|
43 The Xml version that XML currently parser supports |
|
44 @publishedAll |
|
45 @deprecated |
|
46 */ |
|
47 _LIT(KSupportedXmlVersion, "1.0"); |
|
48 |
|
49 /** |
|
50 ID for node containing text data defined in a CDATA section (i.e. within <![CDATA[ .. ]]> ) |
|
51 @publishedAll |
|
52 @deprecated |
|
53 */ |
|
54 _LIT(KCDataID, "CDATA"); |
|
55 |
|
56 /** |
|
57 ID for "normal" text nodes |
|
58 @publishedAll |
|
59 @deprecated |
|
60 */ |
|
61 _LIT(KPCDataID, "#PCDATA"); |
|
62 |
|
63 |
|
64 // Forward class declarations |
|
65 // |
|
66 class CXmlElement; |
|
67 class CXmlParser; |
|
68 class CBNFNode; |
|
69 class CAttributeLookupTable; |
|
70 class MWapPluginSP; |
|
71 |
|
72 // CXmlLibrary |
|
73 // |
|
74 //##ModelId=3B6679A401C8 |
|
75 class CXmlLibrary : public CBase |
|
76 /** |
|
77 @publishedAll |
|
78 @deprecated |
|
79 */ |
|
80 { |
|
81 public: // Methods |
|
82 // Default constuctor |
|
83 // Sets default values values iMIMEType, iDefaultDoctype and iDefaultDTDUrl |
|
84 // An inheriting class should override this constructor and set the variables |
|
85 // with their correct values. |
|
86 //##ModelId=3B6679A402CD |
|
87 IMPORT_C virtual ~CXmlLibrary(); |
|
88 //##ModelId=3B6679A402BA |
|
89 IMPORT_C static CXmlLibrary* NewL(MWapPluginSP& aPluginSP, CXmlElement* aRootNode); |
|
90 //##ModelId=3B6679A402AF |
|
91 IMPORT_C static CXmlLibrary* NewLC(MWapPluginSP& aPluginSP, CXmlElement* aRootNode); |
|
92 |
|
93 //##ModelId=3B6679A40287 |
|
94 IMPORT_C virtual TInt ProcessDataL(TDesC8& aData); |
|
95 |
|
96 // Xml Parse given data and generate document tree to the given root node. |
|
97 // INPUT: |
|
98 // aData - document text, or a piece of it |
|
99 // RETURN: |
|
100 // TInt - an error code defined above, KErrNone if no errors. |
|
101 //##ModelId=3B6679A40291 |
|
102 IMPORT_C virtual TInt ProcessDataL(HBufC8& aData); |
|
103 |
|
104 // Signal parser that incoming data stream has finished |
|
105 // RETURN: |
|
106 // TInt - an error code defined above, KErrNone if no error occured. |
|
107 // NOTE: In case no DTD was available, the document got buffered and was attached |
|
108 // to an attribute in the root node and CommitL returns KErrDocumentBuffered. |
|
109 // The buffered document will be re-parsed when engine receives the requested |
|
110 // DTD and calls a data handler (defined by iMIMEType) for validation. |
|
111 //##ModelId=3B6679A4027E |
|
112 IMPORT_C virtual TInt CommitL(); |
|
113 |
|
114 // Validate the document according to the given DTD. |
|
115 // INPUT: |
|
116 // aDTDRootNode - Root node to the DTD tree which defines the structure of the document. |
|
117 // This referenced node is the DTD root node created by the engine. |
|
118 // The actual DTD tree, if any, is attached as a child to this node. |
|
119 // NO INHERITING CLASS SHOULD OVERRIDE THIS! Override the protected |
|
120 // ValidateL instead. |
|
121 // RETURN: |
|
122 // TInt - an error code defining the reason for validation failure. KErrNone if no errors. |
|
123 //##ModelId=3B6679A40274 |
|
124 IMPORT_C virtual TInt ValidateL(CBNFNode& aDTDRootNode); |
|
125 |
|
126 // Set parser and library to its initial state to start parsing of a new document |
|
127 // INPUT: |
|
128 // aRootNode - root node for the new document tree |
|
129 //##ModelId=3B6679A4026B |
|
130 IMPORT_C virtual void ResetL(CXmlElement* aRootNode); |
|
131 |
|
132 // ----------------------------------------------------------------------- |
|
133 // (WAP Push Addition) |
|
134 // Wap Push specific method to switch off use of XML validator which doesn't work |
|
135 // with push messages. |
|
136 // iIgnoreValidator will be set on class construction to False with complies with |
|
137 // current code usage; for push messages ONLY set iIgnoreValidator to True |
|
138 // ----------------------------------------------------------------------- |
|
139 // inline void OmitValidator(TBool aIgnoreValidator) { iIgnoreValidator = aIgnoreValidator; } ; |
|
140 // |
|
141 // ----------------------------------------------------------------------- |
|
142 |
|
143 protected: |
|
144 // A simple, internal utility function to setup the Xml parser |
|
145 //##ModelId=3B6679A4026A |
|
146 IMPORT_C void PrepareParserL(); |
|
147 |
|
148 //##ModelId=3B6679A40269 |
|
149 IMPORT_C void ConstructL(); |
|
150 |
|
151 // Default constructor |
|
152 // SEE NOTES ON iMimeType, iDefaultDocType and iDefaultDTDUrl for inheriting class's constuctor |
|
153 IMPORT_C CXmlLibrary(MWapPluginSP& aPluginSP, CXmlElement* aRootNode); |
|
154 |
|
155 // Data parsing method for internal usage. Takes ownership of the given data |
|
156 // INPUT: |
|
157 // aData - Pointer to the UNICODE text data. Parser shall take ownership of this data! |
|
158 // RETURN: |
|
159 // TInt - Error code, KErrNone if no errors. |
|
160 //##ModelId=3B6679A402A5 |
|
161 TInt ProcessDataL(HBufC16* aData); |
|
162 |
|
163 // Internal utility function for finishing with the parser |
|
164 // RETURN: |
|
165 // TInt - Error code. KErrNone if no errors. |
|
166 //##ModelId=3B6679A40260 |
|
167 TInt CommitParserL(); |
|
168 |
|
169 // Internal utility function for handling return values from parsing and initiating DTD fetch |
|
170 // RETURN: |
|
171 // TInt - Error code. KErrNone if no errors. |
|
172 //##ModelId=3B6679A4025F |
|
173 TInt ExecuteDataProcessingL(); |
|
174 |
|
175 //##ModelId=3B6679A40255 |
|
176 CBNFNode* ExtractDTDTree(CBNFNode* aDTDRoot); |
|
177 |
|
178 // Internal validation function that actually performs the validation. |
|
179 // INPUT: |
|
180 // aDTDRootNode - Pointer to the _actual_ dtd tree root node, NOT the root given by angine |
|
181 // OUTPUT: |
|
182 // TInt - Error code, KErrNone if no errors |
|
183 //##ModelId=3B6679A4024B |
|
184 IMPORT_C virtual TInt ExecuteValidateL(CBNFNode* aDTDRootNode); |
|
185 |
|
186 protected: // Attributes |
|
187 |
|
188 /** Plugin Service Provider |
|
189 */ |
|
190 //##ModelId=3B6679A40239 |
|
191 MWapPluginSP& iPluginSP; |
|
192 |
|
193 /** Document Root Node |
|
194 */ |
|
195 //##ModelId=3B6679A40225 |
|
196 CXmlElement* iRootNode; |
|
197 |
|
198 // The default DTD doctype and Url in case no DTD was defined |
|
199 // NOTE: Inheriting class should set these values in its constructor!! |
|
200 //##ModelId=3B6679A4021B |
|
201 const TDesC* iDefaultDoctype; |
|
202 |
|
203 //##ModelId=3B6679A40211 |
|
204 const TDesC* iDefaultDTDUrl; |
|
205 |
|
206 /** The actual DTD tree - not owned |
|
207 */ |
|
208 //##ModelId=3B6679A401FC |
|
209 CBNFNode* iDTD; |
|
210 |
|
211 private: // Attributes |
|
212 |
|
213 /** The XML parser |
|
214 */ |
|
215 //##ModelId=3B6679A401F2 |
|
216 CXmlParser* iParser; |
|
217 |
|
218 private: // BC-proofing |
|
219 |
|
220 /** |
|
221 Intended Usage : Reserved for future use |
|
222 @since 6.0 |
|
223 */ |
|
224 //##ModelId=3B6679A40241 |
|
225 IMPORT_C virtual void CXmlLibrary_Reserved1(); |
|
226 |
|
227 /** Reserved for future use |
|
228 */ |
|
229 //##ModelId=3B6679A401E8 |
|
230 TAny* iCXmlLibrary_Reserved; |
|
231 |
|
232 }; |
|
233 |
|
234 #endif // __XMLLIB_H__ |