diff options
Diffstat (limited to 'doc')
-rw-r--r-- | doc/rtfx.xsd | 486 | ||||
-rw-r--r-- | doc/sample.rtf | 68 | ||||
-rw-r--r-- | doc/sample.xml | 1 |
3 files changed, 555 insertions, 0 deletions
diff --git a/doc/rtfx.xsd b/doc/rtfx.xsd new file mode 100644 index 0000000..922b0a6 --- /dev/null +++ b/doc/rtfx.xsd @@ -0,0 +1,486 @@ +<?xml version="1.0"?> +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" + targetNamespace="http://memberwebs.com/ns/rtfx/" + xmlns="http://memberwebs.com/ns/rtfx/" elementFormDefault="qualified"> + + <!-- + Copyright (c) 2004, Nate Nielsen + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + * Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + * Redistributions in binary form must reproduce the + above copyright notice, this list of conditions and + the following disclaimer in the documentation and/or + other materials provided with the distribution. + * The names of contributors to this software may not be + used to endorse or promote products derived from this + software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF + THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH + DAMAGE. + + CONTRIBUTORS + Nate Nielsen <nielsen@memberwebs.com> + --> + + <xs:element name="document"> + <xs:annotation> + <xs:documentation>The entire RTF document.</xs:documentation> + </xs:annotation> + + <xs:complexType> + <xs:choice minOccurs="0" maxOccurs="unbounded"> + <xs:group ref="meta"/> + <xs:group ref="section"/> + <xs:group ref="block"/> + </xs:choice> + </xs:complexType> + </xs:element> + + + <!-- ################################################################## + DOCUMENT META INFO + --> + + <xs:group name="meta"> + <xs:annotation> + <xs:documentation>Tags that that contain data about the document and general formatting.</xs:documentation> + </xs:annotation> + + <xs:choice> + <xs:element ref="info" maxOccurs="1"/> + <xs:element ref="stylesheet" maxOccurs="1"/> + <xs:element ref="options" maxOccurs="1"/> + </xs:choice> + </xs:group> + + <xs:element name="stylesheet"> + <xs:annotation> + <xs:documentation>Contains a list of all the paragraph styles in the document, and their various formatting attributes.</xs:documentation> + </xs:annotation> + + <xs:complexType> + <xs:choice minOccurs="0" maxOccurs="unbounded"> + <xs:element ref="style"/> + </xs:choice> + </xs:complexType> + </xs:element> + + <xs:element name="style"> + <xs:annotation> + <xs:documentation>Represents a paragraph style used in the document.</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:attribute name="name" type="xs:string"> + <xs:annotation> + <xs:documentation>The style name.</xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="bold" type="xs:boolean" default="false"> + <xs:annotation> + <xs:documentation>Style text bold.</xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="hide" type="xs:boolean" default="false"> + <xs:annotation> + <xs:documentation>Style text hidden.</xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="italic" type="xs:boolean" default="false"> + <xs:annotation> + <xs:documentation>Style text italicized.</xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="strike" type="xs:boolean" default="false"> + <xs:annotation> + <xs:documentation>Style text striken out.</xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="underline" type="xs:boolean" default="false"> + <xs:annotation> + <xs:documentation>Style text underlined.</xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="color" type="xs:integer" default="0"> + <xs:annotation> + <xs:documentation>Style text color [NOTE: This attribute is only generated in 'presentation' mode].</xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="face" type="xs:string"> + <xs:annotation> + <xs:documentation>Style font face [NOTE: This attribute is only generated in 'presentation' mode].</xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="size" type="xs:string"> + <xs:annotation> + <xs:documentation>Style font size [NOTE: This attribute is only generated in 'presentation' mode].</xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:complexType> + </xs:element> + + <xs:element name="info"> + <xs:annotation> + <xs:documentation>Document meta information.</xs:documentation> + </xs:annotation> + + <xs:complexType> + <xs:all> + <xs:element name="title" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:documentation>The document title.</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="author" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:documentation>The document author.</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="operator" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:documentation>The document operator.</xs:documentation> + </xs:annotation> + </xs:element> + </xs:all> + </xs:complexType> + </xs:element> + + <xs:element name="options"> + <xs:annotation> + <xs:documentation>Document options and defaults.</xs:documentation> + </xs:annotation> + + <xs:complexType> + <xs:all> + <xs:element ref="font" minOccurs="0"/> + </xs:all> + </xs:complexType> + </xs:element> + + + <!-- ################################################################## + SECTION CONTENT + --> + + <xs:group name="section"> + <xs:annotation> + <xs:documentation>Tags that break a document into various sections.</xs:documentation> + </xs:annotation> + + <xs:choice> + <xs:element ref="sect"/> + <xs:element ref="page"/> + <xs:element ref="footnote"/> + </xs:choice> + </xs:group> + + <xs:element name="sect"> + <xs:annotation> + <xs:documentation>A section break.</xs:documentation> + </xs:annotation> + </xs:element> + + <xs:element name="page"> + <xs:annotation> + <xs:documentation>A 'hard' page break.</xs:documentation> + </xs:annotation> + </xs:element> + + <xs:element name="footnote"> + <xs:annotation> + <xs:documentation>A footnote. Footnotes are all usually grouped together at the end of the document.</xs:documentation> + </xs:annotation> + + <xs:complexType mixed="true"> + <xs:choice minOccurs="0" maxOccurs="unbounded"> + <xs:group ref="block"/> + </xs:choice> + <xs:attribute name="id" type="xs:integer"> + <xs:annotation> + <xs:documentation>The footnote number.</xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:complexType> + </xs:element> + + + <!-- ################################################################## + BLOCK CONTENT + --> + + <xs:group name="block"> + <xs:annotation> + <xs:documentation>Block type elements.</xs:documentation> + </xs:annotation> + + <xs:choice> + <xs:element ref="para"/> + <xs:element ref="list"/> + <xs:element ref="table"/> + </xs:choice> + </xs:group> + + <xs:element name="para"> + <xs:annotation> + <xs:documentation>A paragraph. One of the main basic building blocks of the document. Basically all text and other 'inline' elements are contained in paragraphs.</xs:documentation> + </xs:annotation> + + <xs:complexType mixed="true"> + <xs:choice minOccurs="0" maxOccurs="unbounded"> + <xs:group ref="inline"/> + </xs:choice> + <xs:attribute name="style" type="xs:string"> + <xs:annotation> + <xs:documentation>The paragraph style name.</xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:complexType> + </xs:element> + + <xs:element name="list"> + <xs:annotation> + <xs:documentation>A list. Lists contain paragraphs each of which is an item in the list.</xs:documentation> + </xs:annotation> + + <xs:complexType mixed="true"> + <xs:choice minOccurs="0" maxOccurs="unbounded"> + <xs:group ref="block"/> + </xs:choice> + + <xs:attribute name="ordered" type="xs:boolean"> + <xs:annotation> + <xs:documentation>Whether a numbered list or not.</xs:documentation> + </xs:annotation> + </xs:attribute> + + <xs:attribute name="start" type="xs:integer"> + <xs:annotation> + <xs:documentation>For numbered lists the number to start at.</xs:documentation> + </xs:annotation> + </xs:attribute> + + <xs:attribute name="type" default="disc"> + <xs:annotation> + <xs:documentation>The type of bullet or number on a list.</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="arabic"/> + <xs:enumeration value="upper-roman"/> + <xs:enumeration value="lower-roman"/> + <xs:enumeration value="upper-alpha"/> + <xs:enumeration value="lower-alpha"/> + <xs:enumeration value="disc"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + + </xs:complexType> + </xs:element> + + + <!-- ################################################################## + TABLE STRUCTURE + --> + + <xs:element name="table"> + <xs:annotation> + <xs:documentation>A table.</xs:documentation> + </xs:annotation> + + <xs:complexType> + <xs:sequence minOccurs="0" maxOccurs="unbounded"> + + <xs:element name="row"> + <xs:annotation> + <xs:documentation>A row in a table.</xs:documentation> + </xs:annotation> + + <xs:complexType> + <xs:sequence minOccurs="0" maxOccurs="unbounded"> + + <xs:element name="cell"> + <xs:annotation> + <xs:documentation>A cell in a table. Each cell can contain multiple paragraphs or other block elements.</xs:documentation> + </xs:annotation> + + <xs:complexType> + <xs:choice minOccurs="0" maxOccurs="unbounded"> + <xs:group ref="block"/> + </xs:choice> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + + + <!-- ################################################################## + INLINE CONTENT + --> + + <xs:complexType name="inline" mixed="true"> + <xs:annotation> + <xs:documentation>Inline elements flow with the text and/or change attributes in the text.</xs:documentation> + </xs:annotation> + + <xs:choice minOccurs="0" maxOccurs="unbounded"> + <xs:group ref="inline"/> + </xs:choice> + </xs:complexType> + + <xs:group name="inline"> + <xs:annotation> + <xs:documentation>Inline elements flow with the text and/or change attributes in the text.</xs:documentation> + </xs:annotation> + + <xs:choice> + <xs:element ref="b"/> + <xs:element ref="tab"/> + <xs:element ref="line"/> + <xs:element ref="hide"/> + <xs:element ref="i"/> + <xs:element ref="strike"/> + <xs:element ref="u"/> + <xs:element ref="super"/> + <xs:element ref="sub"/> + <xs:element ref="ref"/> + <xs:element ref="font"/> + </xs:choice> + </xs:group> + + <xs:element name="line"> + <xs:annotation> + <xs:documentation>A 'hard' line break.</xs:documentation> + </xs:annotation> + </xs:element> + + <xs:element name="tab"> + <xs:annotation> + <xs:documentation>A tab.</xs:documentation> + </xs:annotation> + </xs:element> + + <xs:element name="b" type="inline"> + <xs:annotation> + <xs:documentation>Contained text is bold.</xs:documentation> + </xs:annotation> + </xs:element> + + <xs:element name="i" type="inline"> + <xs:annotation> + <xs:documentation>Contained text is italic.</xs:documentation> + </xs:annotation> + </xs:element> + + <xs:element name="u" type="inline"> + <xs:annotation> + <xs:documentation>Contained text is underlined.</xs:documentation> + </xs:annotation> + </xs:element> + + <xs:element name="strike" type="inline"> + <xs:annotation> + <xs:documentation>Contained text is striken out.</xs:documentation> + </xs:annotation> + </xs:element> + + <xs:element name="super" type="inline"> + <xs:annotation> + <xs:documentation>Contained text is superscript.</xs:documentation> + </xs:annotation> + </xs:element> + + <xs:element name="sub" type="inline"> + <xs:annotation> + <xs:documentation>Contained text is subscript.</xs:documentation> + </xs:annotation> + </xs:element> + + <xs:element name="hide" type="inline"> + <xs:annotation> + <xs:documentation>Contained text is hidden.</xs:documentation> + </xs:annotation> + </xs:element> + + <xs:element name="ref"> + <xs:annotation> + <xs:documentation>A reference to another part of the document such as a footnote.</xs:documentation> + </xs:annotation> + + <xs:complexType mixed="true"> + <xs:choice minOccurs="0" maxOccurs="unbounded"> + <xs:group ref="inline"/> + </xs:choice> + + <xs:attribute name="type" fixed="footnote"> + <xs:annotation> + <xs:documentation>The type of object this reference is pointing to. Currently only footnotes are supported.</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="footnote"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + + <xs:attribute name="to" type="xs:string"> + <xs:annotation> + <xs:documentation>The identifier of the object this reference is pointing to.</xs:documentation> + </xs:annotation> + </xs:attribute> + + </xs:complexType> + </xs:element> + + <xs:element name="font"> + <xs:annotation> + <xs:documentation>Font information for contained text [NOTE: This tag is only generated in 'presentation' mode].</xs:documentation> + </xs:annotation> + + <xs:complexType mixed="true"> + <xs:choice minOccurs="0" maxOccurs="unbounded"> + <xs:group ref="inline"/> + </xs:choice> + <xs:attribute name="name" type="xs:string"> + <xs:annotation> + <xs:documentation>The name of the font.</xs:documentation> + </xs:annotation> + </xs:attribute> + + <xs:attribute name="size" type="xs:integer"> + <xs:annotation> + <xs:documentation>The size of the font.</xs:documentation> + </xs:annotation> + </xs:attribute> + + <xs:attribute name="color" type="xs:integer"> + <xs:annotation> + <xs:documentation>The color of the text.</xs:documentation> + </xs:annotation> + </xs:attribute> + + </xs:complexType> + </xs:element> + + +</xs:schema> diff --git a/doc/sample.rtf b/doc/sample.rtf new file mode 100644 index 0000000..c8072a6 --- /dev/null +++ b/doc/sample.rtf @@ -0,0 +1,68 @@ +{\rtf1\ansi\ansicpg1252\uc1\deff0\stshfdbch0\stshfloch0\stshfhich0\stshfbi0\deflang1033\deflangfe1033{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;}
+{\f2\fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}{\f3\froman\fcharset2\fprq2{\*\panose 05050102010706020507}Symbol;}{\f10\fnil\fcharset2\fprq2{\*\panose 05000000000000000000}Wingdings;}
+{\f121\froman\fcharset238\fprq2 Times New Roman CE;}{\f122\froman\fcharset204\fprq2 Times New Roman Cyr;}{\f124\froman\fcharset161\fprq2 Times New Roman Greek;}{\f125\froman\fcharset162\fprq2 Times New Roman Tur;}
+{\f126\froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f127\froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f128\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f129\froman\fcharset163\fprq2 Times New Roman (Vietnamese);}
+{\f131\fswiss\fcharset238\fprq2 Arial CE;}{\f132\fswiss\fcharset204\fprq2 Arial Cyr;}{\f134\fswiss\fcharset161\fprq2 Arial Greek;}{\f135\fswiss\fcharset162\fprq2 Arial Tur;}{\f136\fswiss\fcharset177\fprq2 Arial (Hebrew);}
+{\f137\fswiss\fcharset178\fprq2 Arial (Arabic);}{\f138\fswiss\fcharset186\fprq2 Arial Baltic;}{\f139\fswiss\fcharset163\fprq2 Arial (Vietnamese);}{\f141\fmodern\fcharset238\fprq1 Courier New CE;}{\f142\fmodern\fcharset204\fprq1 Courier New Cyr;}
+{\f144\fmodern\fcharset161\fprq1 Courier New Greek;}{\f145\fmodern\fcharset162\fprq1 Courier New Tur;}{\f146\fmodern\fcharset177\fprq1 Courier New (Hebrew);}{\f147\fmodern\fcharset178\fprq1 Courier New (Arabic);}
+{\f148\fmodern\fcharset186\fprq1 Courier New Baltic;}{\f149\fmodern\fcharset163\fprq1 Courier New (Vietnamese);}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;
+\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{
+\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext0 Normal;}{\s1\ql \li0\ri0\sb240\sa60\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0
+\b\f1\fs32\lang1033\langfe1033\kerning32\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \styrsid2294299 heading 1;}{\*\cs10 \additive \ssemihidden Default Paragraph Font;}{\*
+\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv
+\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs20\lang1024\langfe1024\cgrid\langnp1024\langfenp1024 \snext11 \ssemihidden Normal Table;}{\*\ts15\tsrowd\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10
+\trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv
+\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs20\lang1024\langfe1024\cgrid\langnp1024\langfenp1024 \sbasedon11 \snext15 \styrsid2294299 Table Grid;}{
+\s16\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext16 \ssemihidden \styrsid1792631 footnote text;}{\*\cs17 \additive \super
+\sbasedon10 \ssemihidden \styrsid1792631 footnote reference;}}{\*\latentstyles\lsdstimax156\lsdlockeddef0}{\*\listtable{\list\listtemplateid-767292450\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360
+\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext
+\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698693
+\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers
+;}\f3\fbias0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li3600
+\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li4320\jclisttab\tx4320\lin4320 }
+{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23
+\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0
+\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid687222349}}{\*\listoverridetable{\listoverride\listid687222349
+\listoverridecount0\ls1}}{\*\rsidtbl \rsid1792631\rsid2294299}{\*\generator Microsoft Word 11.0.6113;}{\info{\title This is a test RTF}{\author Nate}{\operator Nate}{\version2}}\widowctrl\ftnbj\aenddoc\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\hyphcaps0\formshade\horzdoc\dgmargin\dghspace180\dgvspace180\dghorigin1800\dgvorigin1440
+\dghshow1\dgvshow1\jexpand\viewkind1\viewscale80\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\nobrkwrptbl\snaptogridincell\allowfieldendsel\wrppunct
+\asianbrkrule\rsidroot2294299\newtblstyruls\nogrowautofit \fet0{\*\ftnsep \pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\insrsid1792631 \chftnsep
+\par }}{\*\ftnsepc \pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\insrsid1792631 \chftnsepc
+\par }}{\*\aftnsep \pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\insrsid1792631 \chftnsep
+\par }}{\*\aftnsepc \pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\insrsid1792631 \chftnsepc
+\par }}\sectd \linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}
+{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang
+{\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain
+\s1\ql \li0\ri0\sb240\sa60\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0\pararsid2294299 \b\f1\fs32\lang1033\langfe1033\kerning32\cgrid\langnp1033\langfenp1033 {\insrsid2294299 This is a test RTF
+\par }\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2294299 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\insrsid2294299 Hi! I\rquote m a test file. This is some }{\b\insrsid2294299 bold}{
+\insrsid2294299 text, and some }{\i\insrsid2294299 italic}{\insrsid2294299 text, as well as some }{\ul\insrsid2294299 underline}{\insrsid2294299 text. And a bit of }{\v\insrsid2294299\charrsid2294299 hidden}{\insrsid2294299 text. So we\rquote
+re going to end this paragraph here and go on to a nice little list:
+\par
+\par {\listtext\pard\plain\f3\insrsid2294299 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ql \fi-360\li720\ri0\widctlpar\jclisttab\tx720\aspalpha\aspnum\faauto\ls1\adjustright\rin0\lin720\itap0\pararsid2294299 {\insrsid2294299 Item 1
+\par {\listtext\pard\plain\f3\insrsid2294299 \loch\af3\dbch\af0\hich\f3 \'b7\tab}Item 2
+\par {\listtext\pard\plain\f3\insrsid2294299 \loch\af3\dbch\af0\hich\f3 \'b7\tab}Item 3
+\par {\listtext\pard\plain\f3\insrsid2294299 \loch\af3\dbch\af0\hich\f3 \'b7\tab}Item 4
+\par }\pard \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2294299 {\insrsid2294299
+\par And now comes a fun table:
+\par
+\par }\trowd \irow0\irowband0\ts15\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10
+\trftsWidth1\trftsWidthB3\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tbllkhdrrows\tbllklastrow\tbllkhdrcols\tbllklastcol \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10
+\cltxlrtb\clftsWidth3\clwWidth2952\clshdrawnil \cellx2844\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2952\clshdrawnil \cellx5796\clvertalt\clbrdrt\brdrs\brdrw10
+\clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2952\clshdrawnil \cellx8748\pard\plain \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0\pararsid2294299\yts15
+\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\insrsid2294299 Cell 1\cell Cell 2
+\par More in cell 2\cell Cell 3\cell }\pard\plain \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\insrsid2294299 \trowd \irow0\irowband0\ts15\trgaph108\trleft-108\trbrdrt
+\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10
+\trftsWidth1\trftsWidthB3\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tbllkhdrrows\tbllklastrow\tbllkhdrcols\tbllklastcol \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10
+\cltxlrtb\clftsWidth3\clwWidth2952\clshdrawnil \cellx2844\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2952\clshdrawnil \cellx5796\clvertalt\clbrdrt\brdrs\brdrw10
+\clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2952\clshdrawnil \cellx8748\row }\pard\plain \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0\pararsid2294299\yts15
+\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\insrsid2294299 Next row\cell Next row \cell Next row\cell }\pard\plain \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0
+\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\insrsid2294299 \trowd \irow1\irowband1\lastrow \ts15\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv
+\brdrs\brdrw10 \trftsWidth1\trftsWidthB3\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tbllkhdrrows\tbllklastrow\tbllkhdrcols\tbllklastcol \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr
+\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2952\clshdrawnil \cellx2844\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2952\clshdrawnil \cellx5796\clvertalt\clbrdrt
+\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2952\clshdrawnil \cellx8748\row }\pard \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2294299 {
+\insrsid2294299
+\par A page break:
+\par \page And here we\rquote re on the next page.}{\insrsid1792631 }{\insrsid2294299
+\par }{\insrsid1792631 This para has a }{\cs17\super\insrsid1792631 \chftn {\footnote \pard\plain \s16\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cs17\super\insrsid1792631
+\chftn }{\insrsid1792631 This is the actual content of the footnote.}}}{\insrsid1792631 footnote.
+\par And here\rquote s yet another paragraph. }{\insrsid1792631\charrsid2294299
+\par }}
\ No newline at end of file diff --git a/doc/sample.xml b/doc/sample.xml new file mode 100644 index 0000000..85b8bfa --- /dev/null +++ b/doc/sample.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8"?><document xmlns="http://memberwebs.com/ns/rtfx/"><info><title>This is a test RTF</title><author>Nate</author><operator>Nate</operator></info><stylesheet><style name="Normal"/><style name="heading 1"/><style name="footnote text"/></stylesheet><options><font size="12" color="0" name="Times New Roman"/></options><para style="heading 1"><font name="1" size="16"><b>This is a test RTF</b></font></para><para>Hi! I’m a test file. This is some <b>bold</b> text, and some <i>italic</i> text, as well as some <u>underline</u> text. And a bit of <hide>hidden</hide> text. So we’re going to end this paragraph here and go on to a nice little list:</para><para/><list type="disc" ordered="0" start="1"><para>Item 1</para><para>Item 2</para><para>Item 3</para><para>Item 4</para></list><para/><para>And now comes a fun table:</para><para/><table><row><cell><para>Cell 1</para></cell><cell><para>Cell 2</para><para>More in cell 2</para></cell><cell><para>Cell 3</para></cell></row><row><cell><para>Next row</para></cell><cell><para>Next row </para></cell><cell><para>Next row</para></cell></row></table><para/><para>A page break:</para><page/><para>And here we’re on the next page. </para><para>This para has a <ref type="footnote" to="1"><super>1</super></ref>footnote.</para><para>And here’s yet another paragraph. </para><para/><footnote id="1"><para><font size="10"><super>1</super> This is the actual content of the footnote.</font></para></footnote></document>
\ No newline at end of file |