Hi to all!
I need to generate different Word documents in XML format. Now I have some questions:
1. Lazarus and FPC have some classes for working with XML. I want make some classes - descendants of TXMLDocument and TXMLElement, which will realize WordML structure. Maybe anyone know existing solution?
2. I began work in this direction and have make some classes. For example: text block in Word document is a xml node with following structure:
http://schemas.liquid-technologies.com/librarydocs/office/2003/t1.html. Text block is a child node of run
element<http://schemas.liquid-technologies.com/librarydocs/office/2003/r3.html>. Run element is a child of paragraph element and so on. WordML is a very big scheme, but most of element is not required for creating correct file.
I want make following classes:
TWordML - descendant of TXMLDocument and document part classes - descendants of TDOMElement. TWordML class must have structure that will allways correspond to WordML scheme.
for examle:
*TWordMLElement *- base class for all document parts. Function *GetElementName *returns tag name of correspondent element.
TWordMLElement = class (TDOMElement)
constructor Create(AOwner: TDOMDocument);
class function GetElementName: string; virtual; abstract;
end;*TRunElement - *class that representing run element in WordML scheme. It contains one child node with tag name 't' and direct link to its content (text block in word documents): property Text.
TRunElement = class (TWordMLElement)
private
FTextNode: TDOMNode;
function GetText: string;
procedure SetText(const AValue: string);
function CreateTextNode: TDOMNode;
published
property Text: string read GetText write SetText;
class function GetElementName: string; override;
end;(Now I have inplenemtation only for one class - TRunElement. I willn't write it here right now)
So, using this class, you don't need to write many lines of code. You need only create new run element and write this two lines:
type
TWordMLClass = class of TWordMLElement;
var
MyRunElement: TRunElement;
MyDoc: TWordML;
...
MyRunElement:=MyDoc.Create(TRunElement);
MyRunElement.Text:='Some symbols for Word document';and you will recieve xml file with following content:
... <w:r><w:t>Some symbols for Word document<w:t/><w:r/> ...
But I have doubt: perhaps, I do something wrong?
I will be grateful for any halp or advise.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus/attachments/20101004/d67cdf49/attachment.html>
