[COMPOSER] Add new php-ffmpeg package

This commit is contained in:
t3nma
2020-08-07 23:42:38 +01:00
parent 0a6bb5190f
commit c527ad0803
8874 changed files with 1090008 additions and 154 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,83 @@
====================
Document conversions
====================
This document aims to document a list of semantic markup elements, which can
not be converted into one or another markup language, so you have to expect
loss in the semantic document information during conversions.
Source RST
==========
Conversion loss, when the source is a RST document.
Docbook
-------
- Strong emphasis
There is no strong emphasis markup in Docbook, so we use <emphasis
role="strong"/> for this, while the role may be lost during further
conversions.
- Table colspan
Table colspan are available in Docbook, but the markup is rather unintuitive
and hard to read. These information may be lost during further conversions.
- Footnote enumeration
In docbook footnote do not have any user assigned enumeration, while in RST
there may be multiple footnotes with the same (labeled) user assigned
number. This information is completely lost during conversion.
- Substitutions
The substitution references are not preserved, but just substituted during
the conversion process. The information about the parts which were
substituted is completely lost.
- Line blocks / literal blocks
Line blocks and literal blocks are converted to <literalblock> elements,
only differing by the given class attribute.
- Bullet list tokens
The information which kind of bullet list token has been used is completely
omitted during the conversion.
XHTML
-----
- Headers
XHtml only allows a specification of header levels from 1 to 6. All headers
with a depth of ≥ 6 contain a class attribute specifying their real depth.
- Blockquote annotations
There is no XHtml element for blockquote annotations, so that they are
transformed to <div class="annotation"/> elements containing <cite>
elements, which may be considered as a citation source. This information may
be lost during further processing. The cite attribute of blockquotes only
accept URIs.
- Bullet list & ordered list types
XHtml strict does not allow to specify the type of bullet lists or ordered
lists, so that this information is lost during conversion.
- Footnotes
There is no dedicated XHtml element for footnotes, so that footnotes are
referenced inside the text by internal links with the class "footnote", and
the actual footnotes are added below the document in lists of the class
footnote with the proper reference targets.
- Line blocks
Line blocks are transformed into paragraphs, where the lines are seperated
by <br /> elements. This causes the right formatting, but may lose semantic
information.

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

View File

@@ -0,0 +1,681 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="600"
height="300"
id="svg2"
sodipodi:version="0.32"
inkscape:version="0.46"
version="1.0"
sodipodi:docname="architecture.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
inkscape:export-filename="/home/kore/devel/ezcomponents/trunk/Document/docs/img/architecture.png"
inkscape:export-xdpi="45"
inkscape:export-ydpi="45">
<defs
id="defs4">
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 526.18109 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="744.09448 : 526.18109 : 1"
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
id="perspective10" />
<marker
inkscape:stockid="Arrow2Lend"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow2Lend"
style="overflow:visible;">
<path
id="path3688"
style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="scale(1.1) rotate(180) translate(1,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow1Lend"
style="overflow:visible;">
<path
id="path3670"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
transform="scale(0.8) rotate(180) translate(12.5,0)" />
</marker>
<marker
inkscape:stockid="Arrow2Mend"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow2Mend"
style="overflow:visible;">
<path
id="path3694"
style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="scale(0.6) rotate(180) translate(0,0)" />
</marker>
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 526.18109 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="744.09448 : 526.18109 : 1"
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
id="perspective3543" />
<inkscape:perspective
id="perspective3451"
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
inkscape:vp_z="744.09448 : 526.18109 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 526.18109 : 1"
sodipodi:type="inkscape:persp3d" />
<marker
inkscape:stockid="Arrow2Lend"
orient="auto"
refY="0.0"
refX="0.0"
id="marker3936"
style="overflow:visible;">
<path
id="path3938"
style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="scale(1.1) rotate(180) translate(1,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0.0"
refX="0.0"
id="marker3932"
style="overflow:visible;">
<path
id="path3934"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
transform="scale(0.8) rotate(180) translate(12.5,0)" />
</marker>
<marker
inkscape:stockid="Arrow2Mend"
orient="auto"
refY="0.0"
refX="0.0"
id="marker3928"
style="overflow:visible;">
<path
id="path3930"
style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="scale(0.6) rotate(180) translate(0,0)" />
</marker>
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 526.18109 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="744.09448 : 526.18109 : 1"
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
id="perspective3926" />
<inkscape:perspective
id="perspective3924"
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
inkscape:vp_z="744.09448 : 526.18109 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 526.18109 : 1"
sodipodi:type="inkscape:persp3d" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
gridtolerance="10000"
guidetolerance="10"
objecttolerance="10"
inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:zoom="1"
inkscape:cx="300"
inkscape:cy="150"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1280"
inkscape:window-height="956"
inkscape:window-x="0"
inkscape:window-y="24" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<g
transform="matrix(1.4456722,0,0,1.4450581,32.610503,-77.910822)"
id="g4092">
<path
transform="translate(-11,-6)"
d="M 241,164.40942 A 48.5,28 0 1 1 144,164.40942 A 48.5,28 0 1 1 241,164.40942 z"
sodipodi:ry="28"
sodipodi:rx="48.5"
sodipodi:cy="164.40942"
sodipodi:cx="192.5"
id="path4094"
style="opacity:1;fill:#3465a4;fill-opacity:1;stroke:#204a87;stroke-width:2.41273284;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
sodipodi:type="arc" />
<path
sodipodi:nodetypes="cssscc"
id="path4096"
d="M 147.81331,175.30492 C 145.358,171.95542 144,168.27342 144,164.40942 C 144,148.95342 165.728,136.40942 192.5,136.40942 C 205.886,136.40942 218.011,139.54542 226.7895,144.61342 C 231.17875,147.14742 234.73137,150.16442 237.18669,153.51392 C 188.16058,147.96257 190.2741,177.28904 147.81331,175.30492 z"
style="opacity:0.10526315;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
transform="translate(-11,-6)" />
<text
sodipodi:linespacing="125%"
id="text4098"
y="165.40942"
x="182"
style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="165.40942"
x="182"
id="tspan4100"
sodipodi:role="line">Docbook</tspan></text>
</g>
<g
id="g4102"
transform="matrix(1.3429121,0,0,1.3423417,221.26146,-155.63957)">
<path
sodipodi:type="arc"
style="opacity:1;fill:#3465a4;fill-opacity:1;stroke:#204a87;stroke-width:2.41273284;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="path4104"
sodipodi:cx="192.5"
sodipodi:cy="164.40942"
sodipodi:rx="48.5"
sodipodi:ry="28"
d="M 241,164.40942 A 48.5,28 0 1 1 144,164.40942 A 48.5,28 0 1 1 241,164.40942 z"
transform="translate(-11,-6)" />
<path
transform="translate(-11,-6)"
style="opacity:0.10526315;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="M 147.81331,175.30492 C 145.358,171.95542 144,168.27342 144,164.40942 C 144,148.95342 165.728,136.40942 192.5,136.40942 C 205.886,136.40942 218.011,139.54542 226.7895,144.61342 C 231.17875,147.14742 234.73137,150.16442 237.18669,153.51392 C 188.16058,147.96257 190.2741,177.28904 147.81331,175.30492 z"
id="path4106"
sodipodi:nodetypes="cssscc" />
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
x="182"
y="165.40942"
id="text4108"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4110"
x="182"
y="165.40942">Creole</tspan></text>
</g>
<g
transform="matrix(1.3429121,0,0,1.3423417,281.26146,-61.63957)"
id="g4112">
<path
transform="translate(-11,-6)"
d="M 241,164.40942 A 48.5,28 0 1 1 144,164.40942 A 48.5,28 0 1 1 241,164.40942 z"
sodipodi:ry="28"
sodipodi:rx="48.5"
sodipodi:cy="164.40942"
sodipodi:cx="192.5"
id="path4114"
style="opacity:1;fill:#3465a4;fill-opacity:1;stroke:#204a87;stroke-width:2.41273284;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
sodipodi:type="arc" />
<path
sodipodi:nodetypes="cssscc"
id="path4116"
d="M 147.81331,175.30492 C 145.358,171.95542 144,168.27342 144,164.40942 C 144,148.95342 165.728,136.40942 192.5,136.40942 C 205.886,136.40942 218.011,139.54542 226.7895,144.61342 C 231.17875,147.14742 234.73137,150.16442 237.18669,153.51392 C 188.16058,147.96257 190.2741,177.28904 147.81331,175.30492 z"
style="opacity:0.10526315;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
transform="translate(-11,-6)" />
<text
sodipodi:linespacing="125%"
id="text4118"
y="165.40942"
x="182"
style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="165.40942"
x="182"
id="tspan4120"
sodipodi:role="line">Dokuwiki</tspan></text>
</g>
<g
id="g4122"
transform="matrix(1.3429121,0,0,1.3423417,221.26146,31.36043)">
<path
sodipodi:type="arc"
style="opacity:1;fill:#3465a4;fill-opacity:1;stroke:#204a87;stroke-width:2.41273284;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="path4124"
sodipodi:cx="192.5"
sodipodi:cy="164.40942"
sodipodi:rx="48.5"
sodipodi:ry="28"
d="M 241,164.40942 A 48.5,28 0 1 1 144,164.40942 A 48.5,28 0 1 1 241,164.40942 z"
transform="translate(-11,-6)" />
<path
transform="translate(-11,-6)"
style="opacity:0.10526315;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="M 147.81331,175.30492 C 145.358,171.95542 144,168.27342 144,164.40942 C 144,148.95342 165.728,136.40942 192.5,136.40942 C 205.886,136.40942 218.011,139.54542 226.7895,144.61342 C 231.17875,147.14742 234.73137,150.16442 237.18669,153.51392 C 188.16058,147.96257 190.2741,177.28904 147.81331,175.30492 z"
id="path4126"
sodipodi:nodetypes="cssscc" />
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
x="182"
y="165.40942"
id="text4128"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4130"
x="182"
y="165.40942">Confluence</tspan></text>
</g>
<g
transform="matrix(1.3429121,0,0,1.3423417,51.26146,-165.63957)"
id="g4132">
<path
transform="translate(-11,-6)"
d="M 241,164.40942 A 48.5,28 0 1 1 144,164.40942 A 48.5,28 0 1 1 241,164.40942 z"
sodipodi:ry="28"
sodipodi:rx="48.5"
sodipodi:cy="164.40942"
sodipodi:cx="192.5"
id="path4134"
style="opacity:1;fill:#3465a4;fill-opacity:1;stroke:#204a87;stroke-width:2.41273284;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
sodipodi:type="arc" />
<path
sodipodi:nodetypes="cssscc"
id="path4136"
d="M 147.81331,175.30492 C 145.358,171.95542 144,168.27342 144,164.40942 C 144,148.95342 165.728,136.40942 192.5,136.40942 C 205.886,136.40942 218.011,139.54542 226.7895,144.61342 C 231.17875,147.14742 234.73137,150.16442 237.18669,153.51392 C 188.16058,147.96257 190.2741,177.28904 147.81331,175.30492 z"
style="opacity:0.10526315;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
transform="translate(-11,-6)" />
<text
sodipodi:linespacing="125%"
id="text4138"
y="165.40942"
x="182"
style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="165.40942"
x="182"
id="tspan4140"
sodipodi:role="line">ReST</tspan></text>
</g>
<g
id="g4142"
transform="matrix(1.3429121,0,0,1.3423417,51.26146,41.36043)">
<path
sodipodi:type="arc"
style="opacity:1;fill:#3465a4;fill-opacity:1;stroke:#204a87;stroke-width:2.41273284;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="path4144"
sodipodi:cx="192.5"
sodipodi:cy="164.40942"
sodipodi:rx="48.5"
sodipodi:ry="28"
d="M 241,164.40942 A 48.5,28 0 1 1 144,164.40942 A 48.5,28 0 1 1 241,164.40942 z"
transform="translate(-11,-6)" />
<path
transform="translate(-11,-6)"
style="opacity:0.10526315;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="M 147.81331,175.30492 C 145.358,171.95542 144,168.27342 144,164.40942 C 144,148.95342 165.728,136.40942 192.5,136.40942 C 205.886,136.40942 218.011,139.54542 226.7895,144.61342 C 231.17875,147.14742 234.73137,150.16442 237.18669,153.51392 C 188.16058,147.96257 190.2741,177.28904 147.81331,175.30492 z"
id="path4146"
sodipodi:nodetypes="cssscc" />
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
x="182"
y="165.40942"
id="text4148"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4150"
x="182"
y="165.40942">ODF</tspan></text>
</g>
<g
transform="matrix(1.3429121,0,0,1.3423417,-118.73854,-155.63957)"
id="g4152">
<path
transform="translate(-11,-6)"
d="M 241,164.40942 A 48.5,28 0 1 1 144,164.40942 A 48.5,28 0 1 1 241,164.40942 z"
sodipodi:ry="28"
sodipodi:rx="48.5"
sodipodi:cy="164.40942"
sodipodi:cx="192.5"
id="path4154"
style="opacity:1;fill:#3465a4;fill-opacity:1;stroke:#204a87;stroke-width:2.41273284;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
sodipodi:type="arc" />
<path
sodipodi:nodetypes="cssscc"
id="path4156"
d="M 147.81331,175.30492 C 145.358,171.95542 144,168.27342 144,164.40942 C 144,148.95342 165.728,136.40942 192.5,136.40942 C 205.886,136.40942 218.011,139.54542 226.7895,144.61342 C 231.17875,147.14742 234.73137,150.16442 237.18669,153.51392 C 188.16058,147.96257 190.2741,177.28904 147.81331,175.30492 z"
style="opacity:0.10526315;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
transform="translate(-11,-6)" />
<text
sodipodi:linespacing="125%"
id="text4158"
y="165.40942"
x="182"
style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="165.40942"
x="182"
id="tspan4160"
sodipodi:role="line">(X)Html</tspan></text>
</g>
<g
id="g4162"
transform="matrix(1.3429121,0,0,1.3423417,-168.73854,-61.63957)">
<path
sodipodi:type="arc"
style="opacity:1;fill:#3465a4;fill-opacity:1;stroke:#204a87;stroke-width:2.41273284;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="path4164"
sodipodi:cx="192.5"
sodipodi:cy="164.40942"
sodipodi:rx="48.5"
sodipodi:ry="28"
d="M 241,164.40942 A 48.5,28 0 1 1 144,164.40942 A 48.5,28 0 1 1 241,164.40942 z"
transform="translate(-11,-6)" />
<path
transform="translate(-11,-6)"
style="opacity:0.10526315;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="M 147.81331,175.30492 C 145.358,171.95542 144,168.27342 144,164.40942 C 144,148.95342 165.728,136.40942 192.5,136.40942 C 205.886,136.40942 218.011,139.54542 226.7895,144.61342 C 231.17875,147.14742 234.73137,150.16442 237.18669,153.51392 C 188.16058,147.96257 190.2741,177.28904 147.81331,175.30492 z"
id="path4166"
sodipodi:nodetypes="cssscc" />
<text
xml:space="preserve"
style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
x="182"
y="165.40942"
id="text4168"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4170"
x="182"
y="165.40942">eZ XML</tspan></text>
</g>
<g
transform="matrix(1.3429121,0,0,1.3423417,-118.73854,31.36043)"
id="g4172">
<path
transform="translate(-11,-6)"
d="M 241,164.40942 A 48.5,28 0 1 1 144,164.40942 A 48.5,28 0 1 1 241,164.40942 z"
sodipodi:ry="28"
sodipodi:rx="48.5"
sodipodi:cy="164.40942"
sodipodi:cx="192.5"
id="path4174"
style="opacity:1;fill:#3465a4;fill-opacity:1;stroke:#204a87;stroke-width:2.41273284;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
sodipodi:type="arc" />
<path
sodipodi:nodetypes="cssscc"
id="path4176"
d="M 147.81331,175.30492 C 145.358,171.95542 144,168.27342 144,164.40942 C 144,148.95342 165.728,136.40942 192.5,136.40942 C 205.886,136.40942 218.011,139.54542 226.7895,144.61342 C 231.17875,147.14742 234.73137,150.16442 237.18669,153.51392 C 188.16058,147.96257 190.2741,177.28904 147.81331,175.30492 z"
style="opacity:0.10526315;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
transform="translate(-11,-6)" />
<text
sodipodi:linespacing="125%"
id="text4178"
y="165.40942"
x="182"
style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="165.40942"
x="182"
id="tspan4180"
sodipodi:role="line">PDF</tspan></text>
</g>
<path
style="fill:#999999;fill-opacity:0.75000000000000000;fill-rule:evenodd;stroke:#999999;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="M 366.85912,151 L 458.24873,151"
id="path4184"
inkscape:connector-type="polyline"
inkscape:connection-start="#g4092"
inkscape:connection-end="#g4112" />
<path
style="fill:#999999;fill-opacity:0.75000000000000000;fill-rule:evenodd;stroke:#999999;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="M 366.85912,190.31116 L 398.24873,207.48313"
id="path4186"
inkscape:connector-type="polyline"
inkscape:connection-start="#g4092"
inkscape:connection-end="#g4122" />
<path
style="fill:#000000;fill-opacity:0.75000000000000000;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="M 295.00001,86.204929 L 295.00001,108.7951"
id="path4190"
inkscape:connector-type="polyline"
inkscape:connection-start="#g4132"
inkscape:connection-end="#g4092" />
<path
style="fill:#000000;fill-opacity:0.75000000000000000;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="M 191.75129,93.909534 L 223.1409,111.26614"
id="path4192"
inkscape:connector-type="polyline"
inkscape:connection-start="#g4152"
inkscape:connection-end="#g4092" />
<path
style="fill:#fcaf3e;fill-opacity:0.75000000000000000;fill-rule:evenodd;stroke:#fcaf3e;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="M 191.75129,53.073459 L 228.24873,50.926551"
id="path4194"
inkscape:connector-type="polyline"
inkscape:connection-start="#g4152"
inkscape:connection-end="#g4132" />
<path
style="fill:#999999;fill-opacity:0.75000000000000000;fill-rule:evenodd;stroke:#999999;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="M 191.75129,207.48313 L 223.1409,190.31116"
id="path4198"
inkscape:connector-type="polyline"
inkscape:connection-start="#g4172"
inkscape:connection-end="#g4092" />
<path
style="fill:#000000;fill-opacity:0.75000000000000000;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="M 141.75129,151 L 223.1409,151"
id="path4200"
inkscape:connector-type="polyline"
inkscape:connection-start="#g4162"
inkscape:connection-end="#g4092" />
<text
xml:space="preserve"
style="font-size:24.89565085999999994px;font-style:normal;font-weight:normal;fill:#999999;fill-opacity:1;stroke:#999999;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="-308.13821"
y="196.60246"
id="text5016"
transform="scale(-1.2524901,0.7984095)"><tspan
sodipodi:role="line"
id="tspan5018"
x="-308.13821"
y="196.60246"></tspan></text>
<text
transform="scale(-1.2524901,0.7984095)"
id="text5020"
y="196.60246"
x="-127.69754"
style="font-size:24.89565085999999994px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="196.60246"
x="-127.69754"
id="tspan5022"
sodipodi:role="line"></tspan></text>
<text
xml:space="preserve"
style="font-size:24.89565085999999994px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="162.76726"
y="196.60246"
id="text5024"
transform="scale(1.2524901,0.7984095)"><tspan
sodipodi:role="line"
id="tspan5026"
x="162.76726"
y="196.60246"></tspan></text>
<text
xml:space="preserve"
style="font-size:24.89565085999999994px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="77.206696"
y="-361.55783"
id="text5052"
transform="matrix(0,1.2524901,-0.7984095,0,0,0)"><tspan
sodipodi:role="line"
id="tspan5054"
x="77.206696"
y="-361.55783"></tspan></text>
<text
transform="matrix(0,-1.2524901,-0.7984095,0,0,0)"
id="text5056"
y="-361.55783"
x="-78.065453"
style="font-size:24.89565085999999994px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="-361.55783"
x="-78.065453"
id="tspan5058"
sodipodi:role="line"></tspan></text>
<text
xml:space="preserve"
style="font-size:24.89565085999999994px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="-179.87048"
y="12.61864"
id="text5068"
transform="matrix(-1.1155656,-0.569425,0.3629844,-0.7111259,0,0)"><tspan
sodipodi:role="line"
id="tspan5070"
x="-179.87048"
y="12.61864"></tspan></text>
<text
transform="matrix(-1.1155656,-0.569425,0.3629844,-0.7111259,0,0)"
id="text5072"
y="4.6042981"
x="-338.45297"
style="font-size:24.89565085999999994px;font-style:normal;font-weight:normal;fill:#999999;fill-opacity:1;stroke:#999999;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="4.6042981"
x="-338.45297"
id="tspan5074"
sodipodi:role="line"></tspan></text>
<g
id="g2477"
style="fill:#000000;stroke:#000000">
<path
inkscape:connection-end="#g4102"
inkscape:connection-start="#g4092"
inkscape:connector-type="polyline"
id="path4182"
d="M 366.85912,111.26614 L 398.24873,93.909535"
style="fill:#000000;fill-opacity:0.75000000000000000;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
<text
xml:space="preserve"
style="font-size:24.89565085999999994px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="240.97641"
y="-324.36923"
id="text5064"
transform="matrix(1.1155656,-0.569425,-0.3629844,-0.7111259,0,0)"><tspan
sodipodi:role="line"
id="tspan5066"
x="240.97641"
y="-324.36923"></tspan></text>
<text
transform="matrix(-1.1155656,0.569425,0.3629844,0.7111259,0,0)"
id="text5076"
y="340.65063"
x="-229.1096"
style="font-size:24.89565085999999994px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="340.65063"
x="-229.1096"
id="tspan5078"
sodipodi:role="line"></tspan></text>
</g>
<text
transform="matrix(-1.1155656,0.569425,0.3629844,0.7111259,0,0)"
id="text5080"
y="348.6416"
x="-68.741844"
style="font-size:24.89565085999999994px;font-style:normal;font-weight:normal;fill:#999999;fill-opacity:1;stroke:#999999;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="348.6416"
x="-68.741844"
id="tspan5082"
sodipodi:role="line"></tspan></text>
<text
transform="matrix(1.1155656,0.569425,-0.3629844,0.7111259,0,0)"
id="text5084"
y="4.2557001"
x="189.24071"
style="font-size:24.89565085999999994px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="4.2557001"
x="189.24071"
id="tspan5086"
sodipodi:role="line"></tspan></text>
<text
xml:space="preserve"
style="font-size:24.89565085999999994px;font-style:normal;font-weight:normal;fill:#fcaf3e;fill-opacity:1;stroke:#fcaf3e;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="-158.86172"
y="97.187622"
id="text5088"
transform="matrix(-1.2468837,0.1183742,7.5458566e-2,0.7948357,0,0)"><tspan
sodipodi:role="line"
id="tspan5090"
x="-158.86172"
y="97.187622"></tspan></text>
<rect
style="opacity:0.7826087;fill:#ffffff;fill-opacity:1;stroke:none"
id="rect2516"
width="156"
height="88"
x="220"
y="210" />
<path
style="fill:#000000;fill-opacity:0.75000000000000000;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
d="M 295.00001,193.2049 L 295.00001,214.79508"
id="path4188"
inkscape:connector-type="polyline"
inkscape:connection-start="#g4092"
inkscape:connection-end="#g4142" />
<text
transform="matrix(0,1.2524901,-0.7984095,0,0,0)"
id="text5048"
y="-361.55783"
x="162.63652"
style="font-size:24.89565085999999994px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="-361.55783"
x="162.63652"
id="tspan5050"
sodipodi:role="line"></tspan></text>
<text
xml:space="preserve"
style="font-size:24.89565085999999994px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="-164.29369"
y="-361.55783"
id="text5060"
transform="matrix(0,-1.2524901,-0.7984095,0,0,0)"><tspan
sodipodi:role="line"
id="tspan5062"
x="-164.29369"
y="-361.55783"></tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 34 KiB

View File

@@ -0,0 +1,260 @@
====================
PDF style directives
====================
The PDF rendering of the document component supports a list of style
directives to customize the output. Most style directives are equivalent to
the CSS directives used for HTML and XML, but there are some additional
directives and not all CSS directives are supported.
The selectors, which can be used are documented in the tutorial__. Currently
all values are required to be escaped inside quotes ("). The full grammar
looks like::
File ::= Directive+
Directive ::= Address '{' Formatting* '}'
Formatting ::= Name ':' '"' Value '"' ';'
Name ::= [A-Za-z-]+
Value ::= [^"]+
Address ::= Element ( Rule )*
Rule ::= '>'? Element
Element ::= ElementName ( '.' ClassName | '#' ElementId )
ClassName ::= [A-Za-z_-]+
ElementName ::= XMLName | '*'
ElementId ::= XMLName
XMLName references to http://www.w3.org/TR/REC-xml/#NT-Name
__ /docs/tutorials/Document#styling-the-pdf
.. contents:: Table of Contents
:depth: 2
All values, given as "measure" accept different units, but always default to
millimeters (mm). Possible units are:
- "mm", Millimeters, the default measure, if none is specified
- "pt", Points, 72 points per inch
- "px", Pixel, depends on the set resolution, by default also 72 points per
inch
- "in", Inch
The unit "Points" is most common for font sizes, while millimeters or inches
will probably more useful for page margins and paddings. You are free to
choose any of them and can even combine different units in one tuple, like::
para {
// Top margin: 12 mm; Right margin: .1 inch; Bottom margin: 10 points,
// Left margin: 1 pixel
margin: "12 .1in 10pt 1px";
}
Font style
==========
font-size: <measure>
--------------------
Defines the font size of the text. Most common unit is points, so it can be
used like::
para {
font-size: "12pt";
}
font-family: <name>
-------------------
Defines the font used to render the text. Currently only the default PDF fonts
are supported, which are:
- ``serif``
- ``sans-serif``
- ``monospace``
- ``Symbol``
- ``ZapfDingbats``
The option can be used like::
para {
font-family: "sans-serif";
}
font-weight: <weight>
---------------------
The font weight defines whether a font is printed bold or normal. Unlike CSS
for now only two possible values are supported: ``bold`` and ``normal``.
Some drivers might support additional values, though. Usage::
emphasis {
font-weight: "bold";
}
font-style: <style>
-------------------
The font style property defines the style of the printed text. The possible
values are ``normal`` and ``italic``. Usage::
emphasis {
font-style: "italic";
}
Text style
==========
text-align: <align>
-------------------
The text alignment defines the alignment of text inside a text block. The
supported values are:
- ``left``
- ``right``
- ``center``
- ``justified``
It can be used like::
para {
text-align: "justified";
}
If you are using justified text alignment you should also configure a
meaningful hyphenator__.
__ /docs/tutorials/Document#hyphenating
line-height: <float>
--------------------
The line height configures the space between two lines in the rendered output.
A line height of 1.4 is generally considered most readable. You can configure
a different line height, like::
para {
line-height: "1.2";
}
Text rendering
==============
text-columns: <int>
-------------------
Number of text columns printed on one page. Obviously not available in common
CSS. Usage::
article {
text-columns: "2";
}
text-column-spacing: <measure>
------------------------------
Spacing between text columns, defined as a common measure. Usage::
article {
text-column-spacing: "10mm";
}
orphans: <int>
--------------
Orphans__ are the dangling lines at the end of a page. This settings
configures how many dangling lines are considered orphans and therefore moved
to the next page. Set to 0 for no line moving. Usage::
article {
orphans: "3";
}
__ http://en.wikipedia.org/wiki/Widows_and_orphans
widows: <int>
-------------
Widows__ are the dangling lines at the beginning of a page from a paragraph of
the page before. This setting configures how many lines a page should at least
contain, so that the lines are not considered widows any more and no
additional lines are required to be shifted from the page before. Usage::
article {
widows: "3";
}
__ http://en.wikipedia.org/wiki/Widows_and_orphans
Page style
==========
page-size: <size>
-----------------
Defines the size of pages. Uses a number of common page size identifiers as
valid values for size definitions, which are: A0, A1, A2, A3, A4, A5, A6, A7,
A8, A9, A10, B0, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, C0, C1, C2, C3, C4,
C5, C6, C7, C8, C9, C10, RA0, RA1, RA2, RA3, RA4, SRA0, SRA1, SRA2, SRA3,
SRA4, LETTER, LEGAL, EXECUTIVE, FOLIO. This setting applies only to the
virtual ``page`` element, like::
page {
page-size: "A4";
}
page-orientation: <orientation>
-------------------------------
Defines the orientation of a page. There are only two valid values for this
setting: ``landscape`` and ``portrait``. This setting applies only to the
virtual ``page`` element, like::
page {
page-orientation: "portrait";
}
Block level styles
==================
There are some style options, which apply to all block level elements, like
paragraphs, titles, pages, images, etc.
margin: <measure> [<measure> [<measure> [<measure> ]]]
------------------------------------------------------
Margin defines the outer space of some element. Like in CSS the number of
values defines the meaning of the values. The meanings are:
1 value
Used for top, right, bottom and left margin.
2 values
First value is used for top and bottom margin, second is used for left and
right margin.
3 values
First value is used for top margin, second is used for left and right
margin, the third is used for bottom margin.
4 values
First value defines the top, second the right, third the bottom, and
fourth the left margin.
Different units may be combined, like::
para {
// Top margin: 12 mm; Right margin: .1 inch; Bottom margin: 10 points,
// Left margin: 1 pixel
margin: "12 .1in 10pt 1px";
}
padding: <measure> [<measure> [<measure> [<measure> ]]]
-------------------------------------------------------
Padding defines additional inner space inside of the borders of an element.
The values are defined just like for margins. Usage::
para {
padding: "12 1px";
}

View File

@@ -0,0 +1,909 @@
========================
eZ Components - Document
========================
.. contents:: Table of Contents
:depth: 3
Introduction
============
The document component offers transformations between different semantic markup
languages, like:
- `ReStructured text`__
- `XHTML`__
- `Docbook`__
- `eZ Publish XML markup`__
- Wiki markup languages, like: Creole__, Dokuwiki__ and Confluence__
- `Open Document Text`__ as used by `OpenOffice.org`__ and other office suites
Like shown in figure 1, each format supports conversions from and to docbook
as a central intermediate format and may implement additional shortcuts for
conversions from and to other formats. Not each format can express the same
semantics, so there may be some information lost, which is `documented in a
dedicated document`__.
.. figure:: img/document-architecture.png
:alt: Conversion architecture in document component
Figure 1: Conversion architecture in document component
There are central handler classes for each markup language, which follow a
common conversion interface ezcDocument and all implement the methods
getAsDocbook() and createFromDocbook().
Additionally the document component can render documents in the following
output formats. Those formats cannot be read, but just generated:
- PDF
__ http://docutils.sourceforge.net/rst.html
__ http://www.w3.org/TR/xhtml1/
__ http://www.docbook.org/
__ Document_conversion.html
__ http://doc.ez.no/eZ-Publish/Technical-manual/4.x/Reference/XML-tags
__ http://www.wikicreole.org/
__ http://www.dokuwiki.org/dokuwiki
__ http://confluence.atlassian.com/renderer/notationhelp.action?section=all
__ http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=office
__ http://www.openoffice.org/
Markup languages
================
The following markup languages are currently handled by the document
component.
ReStructured text
-----------------
`RsStructured Text`__ (RST) is a simple text based markup language, intended
to be easy to read and write by humans. Examples can be found in the
`documentation of RST`__.
The transformation of a simple RST document to docbook can be done just like
this:
.. include:: tutorial/00_00_convert_rst.php
:literal:
In line 3 the document is actually loaded and parsed into an internal abstract
syntax tree. In line 5 the internal structure is then transformed back to a
docbook document. In the last line the resulting document is returned as a
string, so that you can echo or store it.
__ http://docutils.sourceforge.net/rst.html
__ http://docutils.sourceforge.net/docs/user/rst/quickstart.html
Error handling
^^^^^^^^^^^^^^
By default each parsing or compiling error will be transformed into an
exception, so that you are noticed about those errors. The error reporting
settings can be modified like for all other document handlers::
<?php
$document = new ezcDocumentRst();
$document->options->errorReporting = E_PARSE | E_ERROR | E_WARNING;
$document->loadFile( '../tutorial.txt' );
$docbook = $document->getAsDocbook();
echo $docbook->save();
?>
Where the setting in line 3 causes, that only warnings, errors and fatal errors
are transformed to exceptions now, while the notices are only collected, but
ignored. This setting affects both, the parsing of the source document and the
compiling into the destination language.
Directives
^^^^^^^^^^
`RST directives`__ are elements in the RST documents with parameters, optional
named options and optional content. The document component implements a well
known subset of the `directives implemented in the docutils RST parser`__. You
may register custom directive handlers, or overwrite existing directive
handlers using your own implementation. A directive in RST markup with
parameters, options and content could look like::
My document
===========
The custom directive:
.. my_directive:: parameters
:option: value
Some indented text...
For such a directive you should register a handler on the RST document, like::
<?php
$document = new ezcDocumentRst();
$document->registerDirective( 'my_directive', 'myCustomDirective' );
$document->loadFile( $from );
$docbook = $document->getAsDocbook();
$xml = $docbook->save();
?>
The class myCustomDirective must extend the class ezcDocumentRstDirective, and
implement the method toDocbook(). For rendering you get access to the full AST,
the contents of the current directive and the base path, where the document
resist in the file system - which is necessary for accessing external files.
__ http://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html#directives
__ http://docutils.sourceforge.net/docs/ref/rst/directives.html
Directive example
`````````````````
A full example for a custom directive, where we want to embed real world
addresses into our RST document and maintain the semantics in the resulting
docbook, could look like::
Address example
===============
.. address:: John Doe
:street: Some Lane 42
We would possibly add more information, like the ZIP code, city and state, but
skip this to keep the code short. The implemented directive then would just
need to take these information and transform it into valid docbook XML using
the DOM extension.
.. include:: tutorial/00_01_address_directive.php
:literal:
The AST node, which should be rendered, is passed to the constructor of the
custom directive visitor and available in the class property $node. The
complete DOMDocument and the current DOMNode are passed to the method. In this
case we just create a `address node`__ with the optional child nodes street and
personname, depending on the existence of the respective values.
You can now render the RST document after you registered you custom directive
handler as shown above:
.. include:: tutorial/00_02_custom_directive.php
:literal:
The output will then look like::
<?xml version="1.0"?>
<article xmlns="http://docbook.org/ns/docbook">
<section id="address_example">
<sectioninfo/>
<title>Address example</title>
<address>
<personname> John Doe</personname>
<street> Some Lane 42</street>
</address>
</section>
</article>
__ http://docbook.org/tdg/en/html/address.html
XHTML rendering
^^^^^^^^^^^^^^^
For RST a conversion shortcut has been implemented, so that you don't need to
convert the RST to docbook and the docbook to XHTML. This saves conversion time
and enables you to prevent from information loss during multiple conversions::
<?php
$document = new ezcDocumentRst();
$document->loadFile( $from );
$xhtml = $document->getAsXhtml();
$xml = $xhtml->save();
?>
The default XHTML compiler generates complete XHTML documents, including header
and meta-data in the header. If you want to in-line the result, you may specify
another XHTML compiler, which just creates a XHTML block level element, which
can be embedded in your source code::
<?php
$document = new ezcDocumentRst();
$document->options->xhtmlVisitor = 'ezcDocumentRstXhtmlBodyVisitor';
$document->loadFile( $from );
$xhtml = $document->getAsXhtml();
$xml = $xhtml->save();
?>
You can of course also use the predefined and custom directives for XHTML
rendering. The directives used during XHTML generation also need to implement
the interface ezcDocumentRstXhtmlDirective.
Modification of XHTML rendering
```````````````````````````````
You can modify the generated output of the XHTML visitor by creating a custom
visitor for the RST AST. The easiest way probably is to extend from one of the
existing XHTML visitors and reusing it. For example you may want to fill the
type attribute in bullet lists, like known from HTML, which isn't valid XHTML,
though::
class myDocumentRstXhtmlVisitor extends ezcDocumentRstXhtmlVisitor
{
protected function visitBulletList( DOMNode $root, ezcDocumentRstNode $node )
{
$list = $this->document->createElement( 'ul' );
$root->appendChild( $list );
$listTypes = array(
'*' => 'circle',
'+' => 'disc',
'-' => 'square',
"\xe2\x80\xa2" => 'disc',
"\xe2\x80\xa3" => 'circle',
"\xe2\x81\x83" => 'square',
);
// Not allowed in XHTML strict
$list->setAttribute( 'type', $listTypes[$node->token->content] );
// Decoratre blockquote contents
foreach ( $node->nodes as $child )
{
$this->visitNode( $list, $child );
}
}
}
The structure, which is not enforced for visitors, but used in the docbook and
XHTML visitors, is to call special methods for each node type in the AST to
decorate the AST recursively. This method will be called for all bullet list
nodes in the AST which contain the actual list items. As the first parameter
the current position in the XHTML DOM tree is also provided to the method.
To create the XHTML we can now just create a new list node (<ul>) in the
current DOMNode, set the new attribute, and recursively decorate all
descendants using the general visitor dispatching method visitNode() for all
children in the AST. For the AST children being also rendered as children in
the XML tree, we pass the just created DOMNode (<ul>) as the new root node to
the visitNode() method.
After defining such a class, you could use the custom visitor like shown
above::
<?php
$document = new ezcDocumentRst();
$document->options->xhtmlVisitor = 'myDocumentRstXhtmlVisitor';
$document->loadFile( $from );
$xhtml = $document->getAsXhtml();
$xml = $xhtml->save();
?>
Now the lists in the generated XHTML will also the type attribute set.
Writing RST
^^^^^^^^^^^
Writing a RST document from an existing docbook document, or a
ezcDocumentDocbook object generated from some other source, is trivial:
.. include:: tutorial/00_03_write_rst.php
:literal:
For the conversion internally the ezcDocumentDocbookToRstConverter class is
used, which can also be called directly, like::
$converter = new ezcDocumentDocbookToRstConverter();
$rst = $converter->convert( $docbook );
Using this you can configure the converter to your wishes, or extend the
convert to handle yet unhandled docbook elements. The converter is, as usaul
configured using its option property, and the options are defined in the
ezcDocumentDocbookToRstConverterOptions class. There you may configure the
header underlines used, the bullet types or the line wrapping.
Extending RST writing
`````````````````````
As said before, not all existing docbook elements might already be handled by
the converter. But its handler based mechanism makes it easy to extend or
overwrite existing behaviour.
Similar to the example above we can convert the <address> docbook element back
to the address RST directive.
.. include:: tutorial/00_04_address_element.php
:literal:
The handler classes are assigned to XML elements in some namespace, "docbook"
in this case. It is registered in line 18 for the element "address". The class
itself has to extend from the ezcDocumentElementVisitorHandler class, which is
in this case already extended by ezcDocumentDocbookToRstBaseHandler, which
provides some convenience methods for RST creation, like renderDirective() used
in this example.
The handler is called, whenever the element, it has been registered for, occurs
in the docbook XML tree. In this case it has to append the generated RST part
for this element to the RST document - and may call the general conversion
handler again for its child elements. This example converts the above shown
docbook XML back to::
.. _address_example:
===============
Address example
===============
.. address::
John Doe
Some Lane 42
Which ignores any special address sub elements for the simplicity of the
example. For more examples on element handlers check the existing
implementations.
XHTML
-----
Converting XHTML or HTML to a document markup language is a non trivial task,
because XHTML elements are often used for layout, ignoring the actual semantics
of the element. Therefore the document component allows to stack a set of
filters, which each performs a specific conversion task. The default filter
stack may work fine, but you may want to also implement custom filters
depending on the contents of the filtered website, or to cover additional
sources of meta data information, like RDF, Microformats or similar.
The available filters are:
- ezcDocumentXhtmlElementFilter
This filter just maintains the common semantics of XHTML elements by
converting them to their docbook equivalents. It ignores common class names.
This filter is the most basic and you probably want to always add this one to
the filter stack.
- ezcDocumentXhtmlXpathFilter
The XPath filter takes a XPath expression to locate the root of the document
contents. It makes no sense to use this one together with the content locator
filter. This is a more static, but also more precise way to tell the
converter where to find the actual contents.
- ezcDocumentXhtmlMetadataFilter
This filter extracts common meta data from the XHTML head, and converts it
into docbook section info elements.
- ezcDocumentXhtmlTablesFilter
HTML tables are especially often used for layout markup. This filter takes a
threshold, and if the table text factor drops below this threshold the table
is ignored. The same is true for stacked tables.
- ezcDocumentXhtmlContentLocatorFilter
The content locator filter tries to find the actual article in the markup of
a website, ignoring the surrounding layout markup. This seems to work well
for example for common news sites.
By default just the element and meta data filters are used. So the conversion
of a common website, like the `introduction article`__ from ezcomponents.org,
results in a docbook document containing all lists for the navigation, etc..
.. include:: tutorial/01_00_read_html.php
:literal:
So let's additionally use the XPath filter to pass the location of the actual
content to the conversion:
.. include:: tutorial/01_01_read_html_filtered.php
:literal:
With this additional filter, the contents are correctly found and converted
properly.
__ http://ezcomponents.org/introduction
Writing XHTML
^^^^^^^^^^^^^
Writing XHTML from docbook is very similar to the approach used for writing
RST: It the same handler based mechanism, so you may want to check that chapter
to learn how to extend it for unhandled docbook elements.
.. include:: tutorial/01_02_write_html.php
:literal:
As you can see, it happens the same way, as for other conversion from Docbook
to any other format.
HTML styles
^^^^^^^^^^^
By default inline CSS is embedded in all generated HTML, to create a more
appealing default experience. This may of course be deactivated and you may
also reference custom style sheets to be included in the generated HTML.
.. include:: tutorial/01_03_write_html_styled.php
:literal:
For this we again use the converted directly to be able to configure it as we
like.
eZ Xml
------
eZ XML describes the markup format used internally by `eZ Publish`__ for
storing markup in content objects. The format is roughly specified in the `eZ
Publish documentation`__.
Modules are often register custom elements, which are not specified anywhere,
so there might be several elements not handled by default.
__ http://ez.no/ezpublish
__ http://ez.no/doc/ez_publish/technical_manual/4_0/reference/xml_tags
Reading eZ XML
^^^^^^^^^^^^^^
Reading eZ XML is basically the same as for all other formats:
.. include:: tutorial/02_00_read_ezxml.php
:literal:
As always the document object is either constructed from an input string or
file. To convert into docbook you may just use the method getAsDocbook().
Link handling
`````````````
Inside eZ XML documents link URIs are replaced with IDs, which reference the
links inside the eZ Publish database, to ensure that a changed link is update
globally. The replacing of such links is handled by a class extending from
ezcDocumentEzXmlLinkProvider. By default dummy URLs are added to the documents.
URLs are either referenced directly by their ID, a node ID, or an object ID.
Those parameters are passed to the link provide, which then should return an
URL for that.
.. include:: tutorial/02_01_link_provider.php
:literal:
The link provider is only implemented as a trivial stub, but you can establish
a database connection there and actually fetch the required data. I this case
the generated docbook document look like::
<?xml version="1.0"?>
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
<article xmlns="http://docbook.org/ns/docbook">
<section>
<title>Paragraph</title>
<para>Some content, with a <ulink url="http://host/path/1">link</ulink>.</para>
</section>
</article>
The link provider is set again as a option of the converter. Like shown for the
docbook conversions of the other handlers, you can register element handlers
for yet unhandled eZ XML elements on the converter, too.
Wrting eZ XML
^^^^^^^^^^^^^
Writing eZ XML works nearly the same as reading. It again uses a XML based
element handled, like shown in the Docbook to RST conversion in more detail.
For the link conversion an object extending from ezcDocumentEzXmlLinkConverter
is used, which returns an array with the attributes of the link in the eZ XML
document.
Wiki markup
-----------
Wiki markup has no central standard, but is used as a term to describe some
common subset with lots of different extensions. Most wiki markup languages
only support a quite trivial markup with severe limitations on the recursion of
markup blocks. For example no markup really tables containing lists, or
especially not tables containing other tables.
The document component implements a generic parser to support multiple wiki
markup languages. For each different markup syntax a tokenizer has to be
implemented, which converts the implemented markup into a unified token stream,
which can then be handled by the generic parser.
The document component currently supports reading three wiki markup languages,
but new ones are added easily by implementing another tokenizer. Supported are:
- Creole__, developed by a initiative with the intention to create a unified
wiki markup standard. This is the default wiki language, and currently the
only one which can be written.
Creole currently only supports a very limited set of markup__, all further
markup additions are still up to discussion.
- Dokuwiki__ is a popular wiki system, for example used on `wiki.php.net`__
with a quite different syntax, and the most complete markup support, even
including something like footnotes.
- Confluence__ is a common Java based wiki with an entirely different and most
uncommon syntax, which has mainly been implemented to prove the generic
nature of the parser.
All markup languages are tested against all examples from the respective
markup language documentation, there might still be cases where the parsers of
the default implementation behaves slightly different from the implementation
in the document component.
__ http://www.wikicreole.org/
__ http://www.wikicreole.org/wiki/Elements
__ http://www.dokuwiki.org/dokuwiki
__ http://wiki.php.net/
__ http://confluence.atlassian.com/renderer/notationhelp.action?section=all
Reading wiki markup
^^^^^^^^^^^^^^^^^^^
Reading wiki texts basically works like for any other markup language:
.. include:: tutorial/03_00_read_wiki.php
:literal:
As said, by default the Creoletokenizer is used. The same result can be
produced with dokuwiki markup and switching the tokenizer:
.. include:: tutorial/03_01_read_wiki_confluence.php
:literal:
Writing wiki markup
^^^^^^^^^^^^^^^^^^^
Until now only writing of creole wiki markup is supported. Since creole does
not support a lot of the markup available in docbook, not all documents might
get converted properly. Because it does not even support explicit internal
references, we cannot even simulate footnotes like in HTML.
If you want to add support for such conversions, it works exactly like the
docbook RST conversion and can be extended the same way.
.. include:: tutorial/03_02_write_wiki.php
:literal:
PDF
---
PDF (Portable Document Format) has been developed to provide a document
format, which can be presented software and system independent. Because of
this it is often used as a pre-print document exchange format.
The document componen can generate PDF document from all other input formats
and offers a language very similar to CSS to apply custom styling to the
generated output. Additionally it supports adding custom parts, like footers
and headers, to the PDF document.
Reading PDF
^^^^^^^^^^^
The document component for now does not support reading PDF documents.
Writing PDF
^^^^^^^^^^^
Writing PDF basically works like writing any other format supported by the
document component, like the basic example shows:
.. include:: tutorial/04_01_create_pdf.php
:literal:
First we include some RST file to create a Docbook file from it, because, like
described before, Docbook is the central conversion format.
Afterwards the Docbook document is loaded by the PDF class and saved. When
converting the document to a string the PDF is renderer using the default
options and the default driver. The result of this rendering call can be
watched here: `04_01_create_pdf.pdf`__.
__ 04_01_create_pdf.pdf
Output writers
``````````````
Since there are numerous different PDF renderers in the PHP world and the
available ones might depend on the current environment, the document component
supports different PDF driver, as wrapper around different existent libraries.
For now two implementation exist for pecl/haru and TCPDF, but it is fairly easy
to write another one, for another PDF class.
Haru
""""
libharu__ is a open source PDF generation library, written in C, and wrapped
by the haru PHP extension, available from PECL__. If PEAR is correctly setup
on your machine it should install as easy as::
pear install pecl/haru
The Haru driver is pretty fast, but currently has issues with some special
characters. It is the default driver, but can be explicitly used by setting
the driver option on the PDF class, like::
$pdf = new ezcDocumentPdf();
$pdf->options->driver = new ezcDocumentPdfHaruDriver();
__ http://libharu.org
__ http://pecl.php.net/package/haru
TCPDF
"""""
TCPDF is a pure PHP based PDF generation library, available from
`tcpdf.org`__. To use the TCPDF driver you need to download and include its
main class before rendering the PDF. It supports all aspects of PDF rendering
required by the document component, but has some bad coding practices, like:
- Throws lots of warnings and notices, which you might want to silence by
temporarily changing the error reporting level
- Reads and writes several global variables, which might or might not
interfere with your application code
- Uses eval() in several places, which results in non-cacheable OP-Codes.
The TCPDF driver can be used after including the TCPDF source code, using::
$pdf = new ezcDocumentPdf();
$pdf->options->driver = new ezcDocumentPdfTcpdfDriver();
__ http://tcpdf.org
Styling the PDF
```````````````
The PDF output can be styled using a CSS like language, which assigns styles
based on the Docbook XML structure. The default styling rules are defined in
the `default.css`__.
__ https://svn.apache.org/repos/asf/incubator/zetacomponents/trunk/Document/src/pcss/style/default.css
The first most relevant part are the general layout options, which can be
defined for the common article root node in the Docbook XML file. You can set
global font options there, like::
article {
// Basic font style definitions
font-size: "12pt";
font-family: "serif";
font-weight: "normal";
font-style: "normal";
line-height: "1.4";
text-align: "left";
// Basic page layout definitions
text-columns: "1";
text-column-spacing: "10mm";
// General text layout options
orphans: "3";
widows: "3";
}
The meaning of the first set of options should be obvious from CSS. We require
each value to be wrapped by quotes for easier parsing, though.
The second set of options defines options for multi-column layouts, which are
not available in the web, but quite common in generated PDF documents. You can
specify the number of text columns, as well as the distance between the text
columns here.
The third set in this example defines lesser known text layout options like
the handling of `orphans and widows`__, which specify the handling of
overlapping parts of paragraphs on page wrapping.
You can, of course, apply those styles to any elements in your document, using
the common CSS addressing rules, like::
// Emphasis node anywhere in the document
emphasis { ... }
// Title element directly below a section element
section > title { ... }
// Title element anywhere below a section element
section title { ... }
// Title element with the ID "first_title"
title#first_title { ... }
// Title element with the class "foo"
title.foo { ... }
// emphasis node directly below a title with class "foo", anywhere in a
// section with the ID "first"
section#first title.foo > emphasis { ... }
The values and `measures`__ for the properties are very similar to the
properties in CSS. For example the margin and padding properties accept one-
to four-tuples of values, with the same respective meaning like in CSS.
Another central formatting element, which is special to the PDF generation, is
the virtual element "page"::
page {
page-size: "A4";
page-orientation: "portrait";
padding: "22mm 16mm";
}
The page-size property accepts several known page size identifiers and the
page-orientation defines the orientation of a page. You can also address any
page directly by its ID, which will be 'page_1' for the first page, or its
class, which will be "right", or "left", depending on the current page number.
A detailed description of all available `PDF style options`__ is available
here__.
__ http://en.wikipedia.org/wiki/Widows_and_orphans
__ measures
__ Document_styles.html
__ Document_styles.html
Measures
""""""""
The properties in the PDF component accept different measures, which are:
- "mm", Millimeters, the default measure, if none is specified
- "pt", Points, 72 points per inch
- "px", Pixel, depends on the set resolution, by default also 72 points per
inch
- "in", Inch
The unit "Points" is most common for font sizes, while millimeters or inches
will probably more useful for page paddings. You are free to choose any of
them and can even combine different units in one tuple, like::
para {
// Top margin: 12 mm; Right margin: .1 inch; Bottom margin: 10 points,
// Left margin: 1 pixel
margin: "12 .1in 10pt 1px";
}
PDF parts
`````````
PDF parts are additional parts in a rendered document, like headers and
footers. You can implement and register them yourself, and they are activated
by different triggers, like:
- on document creation
- on page creation
- when a document has been finished
The default implementation for headers and footers is triggered on page
creation and renders the title of the document, its author and a page number
in the header or the footer. To develop a custom PDF part you should extend
from the ezcDocumentPdfPart class.
For the following document we are using a set of custom styles, as well as a
header and a footer to customize the rendered PDF document. The additional
custom CSS changes the default font and the page border:
.. include:: tutorial/custom.css
:literal:
The code using the custom CSS and headers and footers then looks like:
.. include:: tutorial/04_02_create_pdf_styled.php
:literal:
The first part, the creation of a Docbook document from a RST document is just
the same like in the first example.
Afterwards we load the above mentioned custom.css as an additional style. You
can load as many styles as you want. If multiple styles are loaded, the latter
ones always (partly) redefine the first styles.
After that two custom PDF parts are registered using their respective option
class to configure their skin. The footer should only show the page number,
while the header should display all parts (title and author), but the page
number.
At the end of the example the document is created as usual, and looks like
this: `04_02_create_pdf_styled.pdf`__ Since the source document does not
include any author information, this information is also not rendered in the
header.
__ 04_02_create_pdf_styled.pdf
Hyphenating
```````````
Proper hyphenation is crucial for nice text rendering especially for justified
paragraph formatting. Since hyphenation is highly language dependent you can
create and use your own custom hyphenator - the default one doesn't do any
hyphenation by default, but just keeps every word as it is.
Custom hyphenators can be implemented by extending from the abstract class
ezcDocumentPdfHyphenator. The only need to implement one Method,
```splitWord()```, which should return possible splitting points of the given
word, as documented in the ezcDocumentPdfHyphenator class.
The custom hyphenator can be configured in the ezcDocumentPdfOptions class,
like this::
$pdf = new ezcDocumentPdf();
$pdf->options->hyphenator = new myHyphenator();
The hyphenator will then be used by all text renderers during the rendering
process.
Open Document Text
------------------
The Open Document Text (ODT) format is natively provided by the
`OpenOffice.org`__ office application suite and supported by other common word
processing tools. The Document component supports importing, exporting and
styling of ODT files.
.. note:: By now only im- and export of flat ODT (.fodt) files is possible.
These can be processed by OpenOffice.org natively. To store FODT,
simply choose the file type from the save dialog.
Reading ODT
^^^^^^^^^^^
The ODT document class reads FODT files and converts them into the internal
Docbook representation of the Document component:
.. include:: tutorial/05_00_read_fodt.php
:literal:
You can generate any of the supported document formats from the Docbook
representation.
FODT files may contain embedded media files, i.e. usually images, which will be
extracted during the import process. You can specify the directory where these images will
be stored through the ```imageDir``` option::
<?php
$odt->options->imageDir = '/path/to/your/images';
?>
The default is your systems temporary directory.
Since Open Document only contains few semantical information compared to
Docbook, the import mechanism performs heuristic detection of information like
emphasized text. This mechanism is quite rudimentary by now and will be made
available as a public API as it matured.
Writing ODT
^^^^^^^^^^^^^
FODT files can be written similar to any of the other formats supported by the
Document component:
.. include:: tutorial/05_01_write_fodt.php
:literal:
Styling ODT
^^^^^^^^^^^
FODT output can be styled using a CSS like language similar to `Styling the
PDF`_. Using simplified CSS you assign style rules to Docbook XML elements,
which are generated into automatic styles in the resulting Open Document. The
default styling rules (`default.css`__) are the same as for PDF.
__ https://svn.apache.org/repos/asf/incubator/zetacomponents/trunk/Document/src/pcss/style/default.css
Applying custom styles can be done as follows:
.. include:: tutorial/05_02_write_fodt_styled.php
:literal:
A detailed description of the available `style options` is available `here`__.
__ Document_styles.html
__ Document_styles.html
..
Local Variables:
mode: rst
fill-column: 79
End:
vim: et syn=rst tw=79

View File

@@ -0,0 +1,10 @@
<?php
require 'tutorial_autoload.php';
$document = new ezcDocumentRst();
$document->loadFile( '../tutorial.txt' );
$docbook = $document->getAsDocbook();
echo $docbook->save();
?>

View File

@@ -0,0 +1,22 @@
<?php
class myAddressDirective extends ezcDocumentRstDirective
{
public function toDocbook( DOMDocument $document, DOMElement $root )
{
$address = $document->createElement( 'address' );
$root->appendChild( $address );
if ( !empty( $this->node->parameters ) )
{
$name = $document->createElement( 'personname', htmlspecialchars( $this->node->parameters ) );
$address->appendChild( $name );
}
if ( isset( $this->node->options['street'] ) )
{
$street = $document->createElement( 'street', htmlspecialchars( $this->node->options['street'] ) );
$address->appendChild( $street );
}
}
}
?>

View File

@@ -0,0 +1,21 @@
<?php
require 'tutorial_autoload.php';
// Load custom directive
require '00_01_address_directive.php';
$document = new ezcDocumentRst();
$document->registerDirective( 'address', 'myAddressDirective' );
$document->loadString( <<<EORST
Address example
===============
.. address:: John Doe
:street: Some Lane 42
EORST
);
$docbook = $document->getAsDocbook();
echo $docbook->save();
?>

View File

@@ -0,0 +1,13 @@
<?php
require 'tutorial_autoload.php';
$docbook = new ezcDocumentDocbook();
$docbook->loadFile( 'docbook.xml' );
$rst = new ezcDocumentRst();
$rst->createFromDocbook( $docbook );
echo $rst->save();
?>

View File

@@ -0,0 +1,23 @@
<?php
require 'tutorial_autoload.php';
$docbook = new ezcDocumentDocbook();
$docbook->loadFile( 'address.xml' );
class myAddressElementHandler extends ezcDocumentDocbookToRstBaseHandler
{
public function handle( ezcDocumentElementVisitorConverter $converter, DOMElement $node, $root )
{
$root .= $this->renderDirective( 'address', $node->textContent, array() );
return $root;
}
}
$converter = new ezcDocumentDocbookToRstConverter();
$converter->setElementHandler( 'docbook', 'address', new myAddressElementHandler() );
$rst = $converter->convert( $docbook );
echo $rst->save();
?>

View File

@@ -0,0 +1,10 @@
<?php
require 'tutorial_autoload.php';
$xhtml = new ezcDocumentXhtml();
$xhtml->loadFile( 'ez_components_introduction.html' );
$docbook = $xhtml->getAsDocbook();
echo $docbook->save();
?>

View File

@@ -0,0 +1,15 @@
<?php
require 'tutorial_autoload.php';
$xhtml = new ezcDocumentXhtml();
$xhtml->setFilters( array(
new ezcDocumentXhtmlElementFilter(),
new ezcDocumentXhtmlMetadataFilter(),
new ezcDocumentXhtmlXpathFilter( '//div[@class="document"]' ),
) );
$xhtml->loadFile( 'ez_components_introduction.html' );
$docbook = $xhtml->getAsDocbook();
echo $docbook->save();
?>

View File

@@ -0,0 +1,13 @@
<?php
require 'tutorial_autoload.php';
$docbook = new ezcDocumentDocbook();
$docbook->loadFile( 'docbook.xml' );
$html = new ezcDocumentXhtml();
$html->createFromDocbook( $docbook );
echo $html->save();
?>

View File

@@ -0,0 +1,22 @@
<?php
require 'tutorial_autoload.php';
$docbook = new ezcDocumentDocbook();
$docbook->loadFile( 'docbook.xml' );
$converter = new ezcDocumentDocbookToHtmlConverter();
// Remove the inline CSS
$converter->options->styleSheet = null;
// Add custom CSS style sheets
$converter->options->styleSheets = array(
'/styles/screen.css',
);
$html = $converter->convert( $docbook );
echo $html->save();
?>

View File

@@ -0,0 +1,14 @@
<?php
require 'tutorial_autoload.php';
$document = new ezcDocumentEzXml();
$document->loadString( '<?xml version="1.0"?>
<section xmlns="http://ez.no/namespaces/ezpublish3">
<header>Paragraph</header>
<paragraph>Some content...</paragraph>
</section>' );
$docbook = $document->getAsDocbook();
echo $docbook->save();
?>

View File

@@ -0,0 +1,29 @@
<?php
require 'tutorial_autoload.php';
class myLinkProvider extends ezcDocumentEzXmlLinkProvider
{
public function fetchUrlById( $id, $view, $show_path )
{
return 'http://host/path/' . $id;
}
public function fetchUrlByNodeId( $id, $view, $show_path ) {}
public function fetchUrlByObjectId( $id, $view, $show_path ) {}
}
$document = new ezcDocumentEzXml();
$document->loadString( '<?xml version="1.0"?>
<section xmlns="http://ez.no/namespaces/ezpublish3">
<header>Paragraph</header>
<paragraph>Some content, with a <link url_id="1">link</link>.</paragraph>
</section>' );
// Set link provider
$converter = new ezcDocumentEzXmlToDocbookConverter();
$converter->options->linkProvider = new myLinkProvider();
$docbook = $converter->convert( $document );
echo $docbook->save();
?>

View File

@@ -0,0 +1,14 @@
<?php
require 'tutorial_autoload.php';
$document = new ezcDocumentWiki();
$document->loadString( '
= Example text =
Just some exaple paragraph with a heading, some **emphasis** markup and a
[[http://ezcomponents.org|link]].' );
$docbook = $document->getAsDocbook();
echo $docbook->save();
?>

View File

@@ -0,0 +1,15 @@
<?php
require 'tutorial_autoload.php';
$document = new ezcDocumentWiki();
$document->options->tokenizer = new ezcDocumentWikiConfluenceTokenizer();
$document->loadString( '
h1. Example text
Just some exaple paragraph with a heading, some *emphasis* markup and a
[link|http://ezcomponents.org].' );
$docbook = $document->getAsDocbook();
echo $docbook->save();
?>

View File

@@ -0,0 +1,11 @@
<?php
require 'tutorial_autoload.php';
$docbook = new ezcDocumentDocbook();
$docbook->loadFile( 'docbook.xml' );
$document = new ezcDocumentWiki();
$document->createFromDocbook( $docbook );
echo $document->save();
?>

View File

@@ -0,0 +1,15 @@
<?php
require 'tutorial_autoload.php';
// Convert some input RSTfile to docbook
$document = new ezcDocumentRst();
$document->loadFile( './article/introduction.txt' );
$pdf = new ezcDocumentPdf();
$pdf->options->errorReporting = E_PARSE | E_ERROR | E_WARNING;
$pdf->createFromDocbook( $document->getAsDocbook() );
file_put_contents( __FILE__ . '.pdf', $pdf );
?>

View File

@@ -0,0 +1,36 @@
<?php
require 'tutorial_autoload.php';
// Convert some input RSTfile to docbook
$document = new ezcDocumentRst();
$document->loadFile( './article/introduction.txt' );
// Load the docbook document and create a PDF from it
$pdf = new ezcDocumentPdf();
$pdf->options->errorReporting = E_PARSE | E_ERROR | E_WARNING;
// Load a custom style sheet
$pdf->loadStyles( 'custom.css' );
// Add a customized footer
$pdf->registerPdfPart( new ezcDocumentPdfFooterPdfPart(
new ezcDocumentPdfFooterOptions( array(
'showDocumentTitle' => false,
'showDocumentAuthor' => false,
'height' => '10mm',
) )
) );
// Add a customized header
$pdf->registerPdfPart( new ezcDocumentPdfHeaderPdfPart(
new ezcDocumentPdfFooterOptions( array(
'showPageNumber' => false,
'height' => '10mm',
) )
) );
$pdf->createFromDocbook( $document->getAsDocbook() );
file_put_contents( __FILE__ . '.pdf', $pdf );
?>

View File

@@ -0,0 +1,11 @@
<?php
require 'tutorial_autoload.php';
$odt = new ezcDocumentOdt();
$odt->loadFile( 'simple.fodt' );
$docbook = $odt->getAsDocbook();
echo $docbook->save();
?>

View File

@@ -0,0 +1,13 @@
<?php
require 'tutorial_autoload.php';
$docbook = new ezcDocumentDocbook();
$docbook->loadFile( 'docbook.xml' );
$odt = new ezcDocumentOdt();
$odt->createFromDocbook( $docbook );
echo $odt->save();
?>

View File

@@ -0,0 +1,16 @@
<?php
require 'tutorial_autoload.php';
$docbook = new ezcDocumentDocbook();
$docbook->loadFile( 'docbook.xml' );
$converter = new ezcDocumentDocbookToOdtConverter();
$converter->options->styler->addStylesheetFile( 'custom.css' );
$odt = $converter->convert( $docbook );
echo $odt->save();
?>

View File

@@ -0,0 +1,11 @@
<?xml version="1.0"?>
<article xmlns="http://docbook.org/ns/docbook">
<section id="address_example">
<sectioninfo/>
<title>Address example</title>
<address>
<personname> John Doe</personname>
<street> Some Lane 42</street>
</address>
</section>
</article>

View File

@@ -0,0 +1,8 @@
article {
font-family: "sans-serif";
font-size: "10pt";
}
page {
padding: "15mm 30mm";
}

View File

@@ -0,0 +1,193 @@
<?xml version="1.0"?>
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
<article xmlns="http://docbook.org/ns/docbook">
<section ID="ez_components_-_document">
<sectioninfo/>
<title>eZ Components - Document</title>
<section ID="introduction">
<sectioninfo/>
<title>Introduction</title>
<para>The document component offers transformations between different semantic markup languages, like:</para>
<itemizedlist>
<listitem>
<para>
<ulink url="http://docutils.sourceforge.net/rst.html">ReStructured text</ulink>
</para>
</listitem>
<listitem>
<para>
<ulink url="http://www.w3.org/TR/xhtml1/">XHTML</ulink>
</para>
</listitem>
<listitem>
<para>
<ulink url="http://www.docbook.org/">Docbook</ulink>
</para>
</listitem>
<listitem>
<para>
<ulink url="Document_conversion.html">eZ Publish XML markup</ulink>
</para>
</listitem>
<listitem>
<para>Wiki markup languages, like: <ulink url="ezxml">Creole</ulink>, <ulink url="creole">Dokuwiki</ulink> and <ulink url="dokuwiki">Confluence</ulink></para>
</listitem>
</itemizedlist>
<para>Where each format support conversions from and to docbook as a central intermediate format and may implement additional shortcuts for conversions from and to other formats. Not each format can express the same semantics, so there may be some information lost, which is <ulink url="confluence">documented in a dedicated document</ulink>.</para>
<para>There are central handler classes for each markup language, which follow a common conversion interface ezcDocument and all implement the methods getAsDocbook() and createFromDocbook().</para>
</section>
<section ID="markup_languages">
<sectioninfo/>
<title>Markup languages</title>
<para>The following markup languages are currently handled by the document component.</para>
<section ID="restructured_text">
<sectioninfo/>
<title>ReStructured text</title>
<section ID="error_handling">
<sectioninfo/>
<title>Error handling</title>
<para>By default each parsing or compiling error will be transformed into an exception, so that you are noticed about those errors. The error reporting settings can be modified like for all other document handlers:</para>
<literallayout>&lt;?php
$document = new ezcDocumentRst();
$document-&gt;options-&gt;errorReporting = E_PARSE | E_ERROR | E_WARNING;
$document-&gt;loadFile( '../tutorial.txt' );
$docbook = $document-&gt;getAsDocbook();
echo $docbook-&gt;save();
?&gt;
</literallayout>
<para>Where the setting in line 3 causes, that only warnings, errors and fatal errors are transformed to exceptions now, while the notices are only collected, but ignored. This setting affects both, the parsing of the source document and the compiling into the destination language.</para>
</section>
<section ID="directives">
<sectioninfo/>
<title>Directives</title>
<section ID="directive_example">
<sectioninfo/>
<title>Directive example</title>
<para>A full example for a custom directive, where we want to embed real world addresses into our RST document and maintain the semantics in the resulting docbook, could look like:</para>
<literallayout>Address example
===============
.. address:: John Doe
:street: Some Lane 42
</literallayout>
<para>We would possibly add more information, like the ZIP code, city and state, but skip this to keep the code short. The implemented directive then would just need to take these information and transform it into valid docbook XML using the DOM extension.</para>
<literallayout>&lt;?php
class myAddressDirective extends ezcDocumentRstDirective
{
public function toDocbook( DOMDocument $document, DOMElement $root )
{
$address = $document-&gt;createElement( 'address' );
$root-&gt;appendChild( $address );
if ( !empty( $this-&gt;node-&gt;parameters ) )
{
$name = $document-&gt;createElement( 'personname', htmlspecialchars( $this-&gt;node-&gt;parameters ) );
$address-&gt;appendChild( $name );
}
if ( isset( $this-&gt;node-&gt;options['street'] ) )
{
$street = $document-&gt;createElement( 'street', htmlspecialchars( $this-&gt;node-&gt;options['street'] ) );
$address-&gt;appendChild( $street );
}
}
}
?&gt;
</literallayout>
<para>The AST node, which should be rendered, is passed to the constructor of the custom directive visitor and available in the class property $node. The complete DOMDocument and the current DOMNode are passed to the method. In this case we just create a <ulink url="http://docbook.org/tdg/en/html/address.html">address node</ulink> with the optional child nodes street and personname, depending on the existence of the respective values.</para>
<para>You can now render the RST document after you registered you custom directive handler as shown above:</para>
<literallayout>&lt;?php
require 'tutorial_autoload.php';
// Load custom directive
require 'address_directive.php';
$document = new ezcDocumentRst();
$document-&gt;registerDirective( 'address', 'myAddressDirective' );
$document-&gt;loadString( &lt;&lt;&lt;EORST
Address example
===============
.. address:: John Doe
:street: Some Lane 42
EORST
);
$docbook = $document-&gt;getAsDocbook();
echo $docbook-&gt;save();
?&gt;
</literallayout>
<para>The output will then look like:</para>
<literallayout>&lt;?xml version="1.0"?&gt;
&lt;article xmlns="http://docbook.org/ns/docbook"&gt;
&lt;section ID="address_example"&gt;
&lt;sectioninfo/&gt;
&lt;title&gt;Address example&lt;/title&gt;
&lt;address&gt;
&lt;personname&gt; John Doe&lt;/personname&gt;
&lt;street&gt; Some Lane 42&lt;/street&gt;
&lt;/address&gt;
&lt;/section&gt;
&lt;/article&gt;
</literallayout>
</section>
</section>
<section ID="xhtml_rendering">
<sectioninfo/>
<title>XHTML rendering</title>
<section ID="modification_of_xhtml_rendering">
<sectioninfo/>
<title>Modification of XHTML rendering</title>
<para>You can modify the generated output of the XHTML visitor by creating a custom visitor for the RST AST. The easiest way probably is to extend from one of the existing XHTML visitors and reusing it. For example you may want to fill the type attribute in bullet lists, like known from HTML, which isn't valid XHTML, though:</para>
<literallayout>class myDocumentRstXhtmlVisitor extends ezcDocumentRstXhtmlVisitor
{
protected function visitBulletList( DOMNode $root, ezcDocumentRstNode $node )
{
$list = $this-&gt;document-&gt;createElement( 'ul' );
$root-&gt;appendChild( $list );
$listTypes = array(
'*' =&gt; 'circle',
'+' =&gt; 'disc',
'-' =&gt; 'square',
"\xe2\x80\xa2" =&gt; 'disc',
"\xe2\x80\xa3" =&gt; 'circle',
"\xe2\x81\x83" =&gt; 'square',
);
// Not allowed in XHTML strict
$list-&gt;setAttribute( 'type', $listTypes[$node-&gt;token-&gt;content] );
// Decoratre blockquote contents
foreach ( $node-&gt;nodes as $child )
{
$this-&gt;visitNode( $list, $child );
}
}
}
</literallayout>
<para>The structure, which is not enforced for visitors, but used in the docbook and XHTML visitors, is to call special methods for each node type in the AST to decorate the AST recursively. This method will be called for all bullet list nodes in the AST which contain the actual list items. As the first parameter the current position in the XHTML DOM tree is also provided to the method.</para>
<para>To create the XHTML we can now just create a new list node (&lt;ul&gt;) in the current DOMNode, set the new attribute, and recursively decorate all descendants using the general visitor dispatching method visitNode() for all children in the AST. For the AST childs being also rendered as children in the XML tree, we pass the just created DOMNode (&lt;ul&gt;) as the new root node to the visitNode() method.</para>
<para>After defining such a class, you could use the custom visitor like shown above:</para>
<literallayout>&lt;?php
$document = new ezcDocumentRst();
$document-&gt;options-&gt;xhtmlVisitor = 'myDocumentRstXhtmlVisitor';
$document-&gt;loadFile( $from );
$xhtml = $document-&gt;getAsXhtml();
$xml = $xhtml-&gt;save();
?&gt;
</literallayout>
<para>Now the lists in the generated XHTML will also the type attribute set.</para>
</section>
</section>
</section>
</section>
</section>
</article>

View File

@@ -0,0 +1,320 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head>
<link type="text/css" rel="stylesheet" href="/stylesheets/core.css"/>
<link type="text/css" rel="stylesheet" href="/stylesheets/pagelayout.css"/>
<!-- YUI CSS -->
<link rel="stylesheet" type="text/css" href="/yui/menu/assets/skins/sam/menu.css"/>
<!-- Local overrides -->
<link type="text/css" rel="stylesheet" href="/stylesheets/ezc.css"/>
<!-- Overrides for print -->
<link type="text/css" rel="stylesheet" href="/stylesheets/print.css" media="print"/>
<!-- IE conditional comments; for bug fixes for different IE versions -->
<!--[if IE 5]> <style type="text/css"> @import url(/extension/ezno2005/design/ezno2005/stylesheets/ie5.css); </style> <![endif]-->
<!--[if lte IE 6]> <style type="text/css"> @import url(/extension/ezno2005/design/ezno2005/stylesheets/ie6lte.css); </style> <![endif]-->
<!--[if gte IE 6]> <style type="text/css"> @import url(/extension/ezno2005/design/ezno2005/stylesheets/ie6gte.css); </style> <![endif]-->
<!-- Load special stylesheet (if necessary) for newer Netscape decendants, Mozilla and Firefox, using the Gecko renderer -->
<script type="text/javascript"><!-- if ((navigator.userAgent.indexOf("Gecko") != -1)&&(navigator.userAgent.indexOf("KHTML") == -1)) document.write("<style type=\"text/css\">@import url(/extension/ezno2005/design/ezno2005/stylesheets/gecko.css);</style>");--></script>
<title>eZ Components - Introduction</title>
<!-- Dependencies -->
<script type="text/javascript" src="/yui/yahoo-dom-event/yahoo-dom-event.js"></script>
<script type="text/javascript" src="/yui/container/container_core-min.js"></script>
<!-- Source File -->
<script type="text/javascript" src="/yui/menu/menu-min.js"></script>
<script type="text/javascript">
YAHOO.util.Event.onContentReady('introduction', function () {
var oMenu = new YAHOO.widget.MenuBar("menu", { autosubmenudisplay: true, showdelay: 200 });
oMenu.render();
});
</script>
<meta http-equiv="Content-Language" content="en-GB"/>
<meta name="author" content="eZ Systems"/>
<meta name="copyright" content="eZ Systems as"/>
<meta name="MSSmartTagsPreventParsing" content="TRUE"/>
</head>
<body class="yui-skin-sam">
<!-- Complete page area: START -->
<div id="page">
<!-- Header area: START -->
<div id="header">
<div id="header-insert">
<!-- User menu area: START -->
<div id="usermenu">
<div id="page-width1">
<div id="logo">
<h1><a href="/"><span class="hide">eZ Components</span></a></h1>
</div>
<p class="hide"><a href="#main">Skip to main content</a></p>
<hr class="hide"/>
<hr class="hide"/>
<h2 class="hide">User menu</h2>
<!-- User menu content: START -->
<ul>
<li><a href="/download"><span>Downloads</span></a></li>
<li><a href="/search"><span>Search</span></a></li>
<li><a href="/support"><span>Contact</span></a></li>
</ul>
<!-- User menu content: END -->
</div>
</div>
<!-- User menu area: END -->
</div>
</div>
<!-- Header area: END -->
<!-- Main menu area: START -->
<div id="mainmenubar">
<div id="page-width2">
<div id="menu" class='yuimenubar yuimenubarnav'>
<div class='bd'>
<ul>
<li class='yuimenubaritem'><a class='yuimenubaritemlabel highlight' href='/introduction'>Introduction</a>
<div id='introduction' class='yuimenu'>
<div class='bd'>
<ul>
<li class='yuimenuitem'><a class='yuimenuitemlabel' href='/introduction/overview'>Overview</a></li>
<li class='yuimenuitem'><a class='yuimenuitemlabel' href='/introduction/requirements'>Requirements</a></li>
<li class='yuimenuitem'><a class='yuimenuitemlabel' href='/introduction/license'>License</a></li>
<li class='yuimenuitem'><a class='yuimenuitemlabel' href='/introduction/roadmap'>Roadmap</a></li>
</ul>
</div>
</div>
</li>
<li class='yuimenubaritem'><a class='yuimenubaritemlabel' href='/docs'>Documentation</a>
<div id='docs' class='yuimenu'>
<div class='bd'>
<ul>
<li class='yuimenuitem'><a class='yuimenuitemlabel' href='/docs/install'>Installation Guide</a></li>
<li class='yuimenuitem'><a class='yuimenuitemlabel' href='/docs/tutorials'>Tutorials</a></li>
<li class='yuimenuitem'><a class='yuimenuitemlabel' href='/docs/api'>API Reference</a></li>
</ul>
</div>
</div>
</li>
<li class='yuimenubaritem'><a class='yuimenubaritemlabel' href='/download'>Download</a>
<div id='download' class='yuimenu'>
<div class='bd'>
<ul>
<li class='yuimenuitem'><a class='yuimenuitemlabel' href='/download/dl_components'>eZ Components</a></li>
<li class='yuimenuitem'><a class='yuimenuitemlabel' href='/download/logos'>Logos</a></li>
<li class='yuimenuitem'><a class='yuimenuitemlabel' href='/download/svn'>Source Access (SVN)</a></li>
</ul>
</div>
</div>
</li>
<li class='yuimenubaritem'><a class='yuimenubaritemlabel' href='/contributing'>Community</a>
<div id='contributing' class='yuimenu'>
<div class='bd'>
<ul>
<li class='yuimenuitem'><a class='yuimenuitemlabel' href='/contributing/dev_process'>Development Process</a></li>
<li class='yuimenuitem'><a class='yuimenuitemlabel' href='/contributing/coding_standards'>Implementation Guidelines</a></li>
<li class='yuimenuitem'><a class='yuimenuitemlabel' href='/contributing/cla'>CLA</a></li>
</ul>
</div>
</div>
</li>
<li class='yuimenubaritem'><a class='yuimenubaritemlabel' href='/support'>Support</a>
<div id='support' class='yuimenu'>
<div class='bd'>
<ul>
<li class='yuimenuitem'><a class='yuimenuitemlabel' href='/support/mailinglist'>Mailinglist</a></li>
<li class='yuimenuitem'><a class='yuimenuitemlabel' href='/support/irc'>IRC</a></li>
<li class='yuimenuitem'><a class='yuimenuitemlabel' href='/support/issues'>Issue Tracker</a></li>
</ul>
</div>
</div>
</li>
<li class='yuimenubaritem'><a class='yuimenubaritemlabel' href='/resources'>Resources</a>
<div id='resources' class='yuimenu'>
<div class='bd'>
<ul>
<li class='yuimenuitem'><a class='yuimenuitemlabel' href='/resources/news'>News Archive</a></li>
<li class='yuimenuitem'><a class='yuimenuitemlabel' href='/resources/articles'>Articles and Publications</a></li>
<li class='yuimenuitem'><a class='yuimenuitemlabel' href='/resources/presentations'>Presentation Slides</a></li>
</ul>
</div>
</div>
</li>
<li class='yuimenubaritem'><a class='yuimenubaritemlabel' href='/search'>Search</a></li>
<li class='yuimenubaritem'><a class='yuimenubaritemlabel' href='/about'>About</a></li>
</ul>
</div>
</div>
</div>
</div>
<!-- Main menu area: END -->
</div>
<hr class="hide"/>
<!-- Path area: START -->
<div id="path">
<div id="page-width4">
<h2 class="hide">Path</h2>
<!-- Path content: START -->
<p>
<a href='/'>ez components</a>
/ <a href='/introduction'>introduction</a>
</p>
<!-- Path content: END -->
</div>
</div>
<!-- Path area: END -->
<hr class="hide"/>
<!-- Main area: START -->
<div id="page-width5">
<div id="main" class="float-break">
<!-- Main area content: START -->
<div class="area-wide-left border-top">
<div class="border-left">
<div class="border-right main-content">
<div class="document" id="why-ez-components">
<h1 class="title">Why eZ Components?</h1>
<p>eZ Components is a high-quality library of independent <a class="reference" href="/introduction/overview">components</a> that aid
in the development of Web-centric applications.</p>
<div class="section">
<h1><a id="powerful-and-independent" name="powerful-and-independent">Powerful and Independent</a></h1>
<p>eZ Components is engineered with a full feature set in mind, providing you with
powerful building blocks for your application.</p>
<p>Each component is also completely independent from the other components, which
allows you to choose exactly which parts of the library you want to use in your
application. The eZ Components library does not dictate how you organize your
application; instead, it provides you with the flexibility to decide how
and when to use each component. In addition, all of the components' APIs are
engineered in a similar way, making them as consistent as possible.</p>
</div>
<div class="section">
<h1><a id="effective-and-high-quality" name="effective-and-high-quality">Effective and High Quality</a></h1>
<p>A library's usefulness stems from its individual components. Each eZ Component
focuses its attention on solving important parts of Web application
development. The components are lean and effective, created to solve specific
recurring issues that developers face.</p>
<p>Quality is of utmost importance. The eZ Components development team uses a
test-driven development methodology that maximizes API usability. This results
in a robust and reliable API.</p>
</div>
<div class="section">
<h1><a id="easily-accessible-open-source-company-backed" name="easily-accessible-open-source-company-backed">Easily Accessible, Open Source, Company-Backed</a></h1>
<p><a class="reference" href="/docs">Documentation</a> is what makes working with a components library such as eZ
Components accessible. Good documentation is extremely valuable because it
enables developers to get the most out of the library. For each of the
components, the documentation includes a <a class="reference" href="/docs/tutorials">tutorial</a> that introduces the API and
gives an overview of the functionality, as well as a thorough API <a class="reference" href="/docs/api">reference</a>
specification. Additionally, <a class="reference" href="/resources/articles">articles</a> build on top of the documentation to
provide more in-depth information about specific components.</p>
<p>eZ Components is published under an open license model. The <a class="reference" href="/introduction/license">New BSD
license</a> is very
permissive and opens up the use of the library to as many developers as
possible. An open source license also facilitates stronger community
involvement.</p>
<p>All of the development processes are <a class="reference" href="/contributing/dev_process">well-documented</a> and made as transparent
as possible for users and external contributors. The eZ Components team is
responsible for code and project maintenance and oversees that the development
processes are followed. Users are thus assured that eZ Components can be
counted on for ongoing quality, relevance, and usefulness.</p>
</div>
</div>
</div>
</div>
</div>
<div class="area-narrow-right">
<div class="border-top">
<div class="border-left">
<div class="border-right main-content">
<div id="navigation" class="side-panel float-break">
<h1 class="block">Navigation</h1>
<ul>
<li><a href="/introduction/overview">Overview</a></li>
<li><a href="/introduction/requirements">Requirements</a></li>
<li><a href="/introduction/license">License</a></li>
<li><a href="/introduction/roadmap">Roadmap</a></li>
</ul>
</div>
</div>
</div>
</div>
<div class="border-top">
<div class="border-left">
<div class="border-right main-content">
<div class="side-panel" style="text-align: center; margin-top: -20px">
<img alt="Hexagons" src='/images/hexagons.png' style="margin-top: 40px"/></a>
</div>
</div>
</div>
</div>
</div>
<!-- Main area content: END -->
</div>
</div>
<!-- Main area: END -->
<hr class="hide"/>
<!-- Footer area: START -->
<div id="footer-design">
<div id="page-width6">
<div id="footer">
<address><a href="/"><img alt="Powered by eZ Components" src="/images/logos/powered-by-211x16-transparent.gif"/></a></address>
<address>Copyright © 2007 - 2008 <a href="http://ez.no">eZ Systems AS</a>. All rights reserved.</address>
</div>
</div>
</div>
<!-- Footer area: END -->
<!-- Complete page area: END -->
<!-- th[eZ] 20050804 -->
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
var pageTracker = _gat._getTracker("UA-303624-3");
pageTracker._initData();
pageTracker._trackPageview();
</script>
</body></html>
<!-- Sun, 23 Nov 2008 20:13:01 +0100 new -->

View File

@@ -0,0 +1,742 @@
<?xml version="1.0" encoding="UTF-8"?>
<office:document xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0"
xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0"
xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0"
xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0"
xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0"
xmlns:math="http://www.w3.org/1998/Math/MathML"
xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0"
xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0"
xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0"
xmlns:ooo="http://openoffice.org/2004/office"
xmlns:ooow="http://openoffice.org/2004/writer"
xmlns:oooc="http://openoffice.org/2004/calc"
xmlns:dom="http://www.w3.org/2001/xml-events"
xmlns:xforms="http://www.w3.org/2002/xforms"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:rpt="http://openoffice.org/2005/report"
xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2"
xmlns:rdfa="http://docs.oasis-open.org/opendocument/meta/rdfa#"
xmlns:field="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:field:1.0"
xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0"
office:version="1.2"
office:mimetype="application/vnd.oasis.opendocument.text">
<office:meta>
<meta:creation-date>2009-08-25T09:57:12</meta:creation-date>
<dc:date>2009-09-01T22:31:32</dc:date>
<meta:editing-duration>PT00H10M46S</meta:editing-duration>
<meta:editing-cycles>5</meta:editing-cycles>
<meta:generator>OpenOffice.org/3.0$Linux OpenOffice.org_project/300m15$Build-9379</meta:generator>
<meta:document-statistic meta:table-count="0" meta:image-count="0" meta:object-count="0"
meta:page-count="1"
meta:paragraph-count="23"
meta:word-count="81"
meta:character-count="389"/>
</office:meta>
<office:settings>
<config:config-item-set config:name="ooo:view-settings">
<config:config-item config:name="ViewAreaTop" config:type="int">0</config:config-item>
<config:config-item config:name="ViewAreaLeft" config:type="int">0</config:config-item>
<config:config-item config:name="ViewAreaWidth" config:type="int">49585</config:config-item>
<config:config-item config:name="ViewAreaHeight" config:type="int">25084</config:config-item>
<config:config-item config:name="ShowRedlineChanges" config:type="boolean">true</config:config-item>
<config:config-item config:name="InBrowseMode" config:type="boolean">false</config:config-item>
<config:config-item-map-indexed config:name="Views">
<config:config-item-map-entry>
<config:config-item config:name="ViewId" config:type="string">view2</config:config-item>
<config:config-item config:name="ViewLeft" config:type="int">12455</config:config-item>
<config:config-item config:name="ViewTop" config:type="int">21488</config:config-item>
<config:config-item config:name="VisibleLeft" config:type="int">0</config:config-item>
<config:config-item config:name="VisibleTop" config:type="int">0</config:config-item>
<config:config-item config:name="VisibleRight" config:type="int">49583</config:config-item>
<config:config-item config:name="VisibleBottom" config:type="int">25083</config:config-item>
<config:config-item config:name="ZoomType" config:type="short">0</config:config-item>
<config:config-item config:name="ViewLayoutColumns" config:type="short">0</config:config-item>
<config:config-item config:name="ViewLayoutBookMode" config:type="boolean">false</config:config-item>
<config:config-item config:name="ZoomFactor" config:type="short">100</config:config-item>
<config:config-item config:name="IsSelectedFrame" config:type="boolean">false</config:config-item>
</config:config-item-map-entry>
</config:config-item-map-indexed>
</config:config-item-set>
<config:config-item-set config:name="ooo:configuration-settings">
<config:config-item config:name="AddParaTableSpacing" config:type="boolean">true</config:config-item>
<config:config-item config:name="PrintReversed" config:type="boolean">false</config:config-item>
<config:config-item config:name="OutlineLevelYieldsNumbering" config:type="boolean">false</config:config-item>
<config:config-item config:name="LinkUpdateMode" config:type="short">1</config:config-item>
<config:config-item config:name="PrintEmptyPages" config:type="boolean">true</config:config-item>
<config:config-item config:name="IgnoreFirstLineIndentInNumbering" config:type="boolean">false</config:config-item>
<config:config-item config:name="CharacterCompressionType" config:type="short">0</config:config-item>
<config:config-item config:name="PrintSingleJobs" config:type="boolean">false</config:config-item>
<config:config-item config:name="UpdateFromTemplate" config:type="boolean">true</config:config-item>
<config:config-item config:name="PrintPaperFromSetup" config:type="boolean">false</config:config-item>
<config:config-item config:name="AddFrameOffsets" config:type="boolean">false</config:config-item>
<config:config-item config:name="PrintLeftPages" config:type="boolean">true</config:config-item>
<config:config-item config:name="RedlineProtectionKey" config:type="base64Binary"/>
<config:config-item config:name="PrintTables" config:type="boolean">true</config:config-item>
<config:config-item config:name="ProtectForm" config:type="boolean">false</config:config-item>
<config:config-item config:name="ChartAutoUpdate" config:type="boolean">true</config:config-item>
<config:config-item config:name="PrintControls" config:type="boolean">true</config:config-item>
<config:config-item config:name="PrinterSetup" config:type="base64Binary"/>
<config:config-item config:name="IgnoreTabsAndBlanksForLineCalculation" config:type="boolean">false</config:config-item>
<config:config-item config:name="PrintAnnotationMode" config:type="short">0</config:config-item>
<config:config-item config:name="LoadReadonly" config:type="boolean">false</config:config-item>
<config:config-item config:name="AddParaSpacingToTableCells" config:type="boolean">true</config:config-item>
<config:config-item config:name="AddExternalLeading" config:type="boolean">true</config:config-item>
<config:config-item config:name="ApplyUserData" config:type="boolean">true</config:config-item>
<config:config-item config:name="FieldAutoUpdate" config:type="boolean">true</config:config-item>
<config:config-item config:name="SaveVersionOnClose" config:type="boolean">false</config:config-item>
<config:config-item config:name="SaveGlobalDocumentLinks" config:type="boolean">false</config:config-item>
<config:config-item config:name="IsKernAsianPunctuation" config:type="boolean">false</config:config-item>
<config:config-item config:name="AlignTabStopPosition" config:type="boolean">true</config:config-item>
<config:config-item config:name="ClipAsCharacterAnchoredWriterFlyFrames" config:type="boolean">false</config:config-item>
<config:config-item config:name="CurrentDatabaseDataSource" config:type="string"/>
<config:config-item config:name="TabAtLeftIndentForParagraphsInList" config:type="boolean">false</config:config-item>
<config:config-item config:name="DoNotCaptureDrawObjsOnPage" config:type="boolean">false</config:config-item>
<config:config-item config:name="TableRowKeep" config:type="boolean">false</config:config-item>
<config:config-item config:name="PrinterName" config:type="string"/>
<config:config-item config:name="PrintFaxName" config:type="string"/>
<config:config-item config:name="ConsiderTextWrapOnObjPos" config:type="boolean">false</config:config-item>
<config:config-item config:name="UseOldPrinterMetrics" config:type="boolean">false</config:config-item>
<config:config-item config:name="PrintRightPages" config:type="boolean">true</config:config-item>
<config:config-item config:name="IsLabelDocument" config:type="boolean">false</config:config-item>
<config:config-item config:name="UseFormerLineSpacing" config:type="boolean">false</config:config-item>
<config:config-item config:name="AddParaTableSpacingAtStart" config:type="boolean">true</config:config-item>
<config:config-item config:name="UseFormerTextWrapping" config:type="boolean">false</config:config-item>
<config:config-item config:name="DoNotResetParaAttrsForNumFont" config:type="boolean">false</config:config-item>
<config:config-item config:name="PrintProspect" config:type="boolean">false</config:config-item>
<config:config-item config:name="PrintGraphics" config:type="boolean">true</config:config-item>
<config:config-item config:name="AllowPrintJobCancel" config:type="boolean">true</config:config-item>
<config:config-item config:name="CurrentDatabaseCommandType" config:type="int">0</config:config-item>
<config:config-item config:name="DoNotJustifyLinesWithManualBreak" config:type="boolean">false</config:config-item>
<config:config-item config:name="TabsRelativeToIndent" config:type="boolean">true</config:config-item>
<config:config-item config:name="UseFormerObjectPositioning" config:type="boolean">false</config:config-item>
<config:config-item config:name="PrinterIndependentLayout" config:type="string">high-resolution</config:config-item>
<config:config-item config:name="UseOldNumbering" config:type="boolean">false</config:config-item>
<config:config-item config:name="PrintPageBackground" config:type="boolean">true</config:config-item>
<config:config-item config:name="CurrentDatabaseCommand" config:type="string"/>
<config:config-item config:name="PrintDrawings" config:type="boolean">true</config:config-item>
<config:config-item config:name="PrintBlackFonts" config:type="boolean">false</config:config-item>
<config:config-item config:name="UnxForceZeroExtLeading" config:type="boolean">false</config:config-item>
</config:config-item-set>
</office:settings>
<office:scripts>
<office:script script:language="ooo:Basic">
<ooo:libraries/>
</office:script>
</office:scripts>
<office:font-face-decls>
<style:font-face style:name="OpenSymbol" svg:font-family="OpenSymbol"/>
<style:font-face style:name="Times New Roman" svg:font-family="'Times New Roman'"
style:font-family-generic="roman"
style:font-pitch="variable"/>
<style:font-face style:name="Arial" svg:font-family="Arial" style:font-family-generic="swiss"
style:font-pitch="variable"/>
<style:font-face style:name="DejaVu Sans" svg:font-family="'DejaVu Sans'"
style:font-family-generic="system"
style:font-pitch="variable"/>
</office:font-face-decls>
<office:styles>
<style:default-style style:family="graphic">
<style:graphic-properties draw:shadow-offset-x="0.1181in" draw:shadow-offset-y="0.1181in"
draw:start-line-spacing-horizontal="0.1114in"
draw:start-line-spacing-vertical="0.1114in"
draw:end-line-spacing-horizontal="0.1114in"
draw:end-line-spacing-vertical="0.1114in"
style:flow-with-text="false"/>
<style:paragraph-properties style:text-autospace="ideograph-alpha" style:line-break="strict"
style:writing-mode="lr-tb"
style:font-independent-line-spacing="false">
<style:tab-stops/>
</style:paragraph-properties>
<style:text-properties style:use-window-font-color="true" fo:font-size="12pt" fo:language="en"
fo:country="US"
style:letter-kerning="true"
style:font-size-asian="10.5pt"
style:language-asian="zxx"
style:country-asian="none"
style:font-size-complex="12pt"
style:language-complex="zxx"
style:country-complex="none"/>
</style:default-style>
<style:default-style style:family="paragraph">
<style:paragraph-properties fo:hyphenation-ladder-count="no-limit" style:text-autospace="ideograph-alpha"
style:punctuation-wrap="hanging"
style:line-break="strict"
style:tab-stop-distance="0.4925in"
style:writing-mode="page"/>
<style:text-properties style:use-window-font-color="true" style:font-name="Times New Roman"
fo:font-size="12pt"
fo:language="en"
fo:country="US"
style:letter-kerning="true"
style:font-name-asian="DejaVu Sans"
style:font-size-asian="10.5pt"
style:language-asian="zxx"
style:country-asian="none"
style:font-name-complex="DejaVu Sans"
style:font-size-complex="12pt"
style:language-complex="zxx"
style:country-complex="none"
fo:hyphenate="false"
fo:hyphenation-remain-char-count="2"
fo:hyphenation-push-char-count="2"/>
</style:default-style>
<style:default-style style:family="table">
<style:table-properties table:border-model="collapsing"/>
</style:default-style>
<style:default-style style:family="table-row">
<style:table-row-properties fo:keep-together="auto"/>
</style:default-style>
<style:style style:name="Standard" style:family="paragraph" style:class="text"/>
<style:style style:name="Heading" style:family="paragraph"
style:parent-style-name="Standard"
style:next-style-name="Text_20_body"
style:class="text">
<style:paragraph-properties fo:margin-top="0.1665in" fo:margin-bottom="0.0835in" fo:keep-with-next="always"/>
<style:text-properties style:font-name="Arial" fo:font-size="14pt" style:font-name-asian="DejaVu Sans"
style:font-size-asian="14pt"
style:font-name-complex="DejaVu Sans"
style:font-size-complex="14pt"/>
</style:style>
<style:style style:name="Text_20_body" style:display-name="Text body"
style:family="paragraph"
style:parent-style-name="Standard"
style:class="text">
<style:paragraph-properties fo:margin-top="0in" fo:margin-bottom="0.0835in"/>
</style:style>
<style:style style:name="List" style:family="paragraph"
style:parent-style-name="Text_20_body"
style:class="list">
<style:text-properties style:font-size-asian="12pt"/>
</style:style>
<style:style style:name="Caption" style:family="paragraph"
style:parent-style-name="Standard"
style:class="extra">
<style:paragraph-properties fo:margin-top="0.0835in" fo:margin-bottom="0.0835in" text:number-lines="false"
text:line-number="0"/>
<style:text-properties fo:font-size="12pt" fo:font-style="italic" style:font-size-asian="12pt"
style:font-style-asian="italic"
style:font-size-complex="12pt"
style:font-style-complex="italic"/>
</style:style>
<style:style style:name="Index" style:family="paragraph" style:parent-style-name="Standard"
style:class="index">
<style:paragraph-properties text:number-lines="false" text:line-number="0"/>
<style:text-properties style:font-size-asian="12pt"/>
</style:style>
<style:style style:name="Heading_20_1" style:display-name="Heading 1"
style:family="paragraph"
style:parent-style-name="Heading"
style:next-style-name="Text_20_body"
style:class="text"
style:default-outline-level="1">
<style:text-properties fo:font-size="115%" fo:font-weight="bold" style:font-size-asian="115%"
style:font-weight-asian="bold"
style:font-size-complex="115%"
style:font-weight-complex="bold"/>
</style:style>
<style:style style:name="Heading_20_2" style:display-name="Heading 2"
style:family="paragraph"
style:parent-style-name="Heading"
style:next-style-name="Text_20_body"
style:class="text"
style:default-outline-level="2">
<style:text-properties fo:font-size="14pt" fo:font-style="italic" fo:font-weight="bold"
style:font-size-asian="14pt"
style:font-style-asian="italic"
style:font-weight-asian="bold"
style:font-size-complex="14pt"
style:font-style-complex="italic"
style:font-weight-complex="bold"/>
</style:style>
<style:style style:name="Heading_20_3" style:display-name="Heading 3"
style:family="paragraph"
style:parent-style-name="Heading"
style:next-style-name="Text_20_body"
style:class="text"
style:default-outline-level="3">
<style:text-properties fo:font-size="14pt" fo:font-weight="bold" style:font-size-asian="14pt"
style:font-weight-asian="bold"
style:font-size-complex="14pt"
style:font-weight-complex="bold"/>
</style:style>
<style:style style:name="Numbering_20_Symbols" style:display-name="Numbering Symbols"
style:family="text"/>
<style:style style:name="Bullet_20_Symbols" style:display-name="Bullet Symbols"
style:family="text">
<style:text-properties style:font-name="OpenSymbol" style:font-name-asian="OpenSymbol"
style:font-name-complex="OpenSymbol"/>
</style:style>
<text:outline-style style:name="Outline">
<text:outline-level-style text:level="1" style:num-format="">
<style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
<style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="0.3in"
fo:text-indent="-0.3in"
fo:margin-left="0.3in"/>
</style:list-level-properties>
</text:outline-level-style>
<text:outline-level-style text:level="2" style:num-format="">
<style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
<style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="0.4in"
fo:text-indent="-0.4in"
fo:margin-left="0.4in"/>
</style:list-level-properties>
</text:outline-level-style>
<text:outline-level-style text:level="3" style:num-format="">
<style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
<style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="0.5in"
fo:text-indent="-0.5in"
fo:margin-left="0.5in"/>
</style:list-level-properties>
</text:outline-level-style>
<text:outline-level-style text:level="4" style:num-format="">
<style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
<style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="0.6in"
fo:text-indent="-0.6in"
fo:margin-left="0.6in"/>
</style:list-level-properties>
</text:outline-level-style>
<text:outline-level-style text:level="5" style:num-format="">
<style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
<style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="0.7in"
fo:text-indent="-0.7in"
fo:margin-left="0.7in"/>
</style:list-level-properties>
</text:outline-level-style>
<text:outline-level-style text:level="6" style:num-format="">
<style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
<style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="0.8in"
fo:text-indent="-0.8in"
fo:margin-left="0.8in"/>
</style:list-level-properties>
</text:outline-level-style>
<text:outline-level-style text:level="7" style:num-format="">
<style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
<style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="0.9in"
fo:text-indent="-0.9in"
fo:margin-left="0.9in"/>
</style:list-level-properties>
</text:outline-level-style>
<text:outline-level-style text:level="8" style:num-format="">
<style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
<style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="1in"
fo:text-indent="-1in"
fo:margin-left="1in"/>
</style:list-level-properties>
</text:outline-level-style>
<text:outline-level-style text:level="9" style:num-format="">
<style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
<style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="1.1in"
fo:text-indent="-1.1in"
fo:margin-left="1.1in"/>
</style:list-level-properties>
</text:outline-level-style>
<text:outline-level-style text:level="10" style:num-format="">
<style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
<style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="1.2in"
fo:text-indent="-1.2in"
fo:margin-left="1.2in"/>
</style:list-level-properties>
</text:outline-level-style>
</text:outline-style>
<text:notes-configuration text:note-class="footnote" style:num-format="1" text:start-value="0"
text:footnotes-position="page"
text:start-numbering-at="document"/>
<text:notes-configuration text:note-class="endnote" style:num-format="i" text:start-value="0"/>
<text:linenumbering-configuration text:number-lines="false" text:offset="0.1965in" style:num-format="1"
text:number-position="left"
text:increment="5"/>
</office:styles>
<office:automatic-styles>
<style:style style:name="P1" style:family="paragraph" style:parent-style-name="Text_20_body">
<style:text-properties fo:font-weight="normal" style:font-weight-asian="normal"
style:font-weight-complex="normal"/>
</style:style>
<style:style style:name="P2" style:family="paragraph" style:parent-style-name="Text_20_body">
<style:text-properties fo:font-weight="bold" style:font-weight-asian="bold"
style:font-weight-complex="bold"/>
</style:style>
<style:style style:name="P3" style:family="paragraph" style:parent-style-name="Text_20_body"
style:list-style-name="L1">
<style:text-properties fo:font-weight="normal" style:font-weight-asian="normal"
style:font-weight-complex="normal"/>
</style:style>
<style:style style:name="P4" style:family="paragraph" style:parent-style-name="Text_20_body"
style:list-style-name="L2">
<style:text-properties fo:font-weight="normal" style:font-weight-asian="normal"
style:font-weight-complex="normal"/>
</style:style>
<style:style style:name="P5" style:family="paragraph" style:parent-style-name="Text_20_body"
style:list-style-name="L3"/>
<style:style style:name="T1" style:family="text">
<style:text-properties fo:font-weight="bold" style:font-weight-asian="bold"
style:font-weight-complex="bold"/>
</style:style>
<style:style style:name="T2" style:family="text">
<style:text-properties fo:font-weight="normal" style:font-weight-asian="normal"
style:font-weight-complex="normal"/>
</style:style>
<text:list-style style:name="L1">
<text:list-level-style-number text:level="1" text:style-name="Numbering_20_Symbols" style:num-suffix="."
style:num-format="1">
<style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
<style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="0.5in"
fo:text-indent="-0.25in"
fo:margin-left="0.5in"/>
</style:list-level-properties>
</text:list-level-style-number>
<text:list-level-style-number text:level="2" text:style-name="Numbering_20_Symbols" style:num-suffix="."
style:num-format="1">
<style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
<style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="0.75in"
fo:text-indent="-0.25in"
fo:margin-left="0.75in"/>
</style:list-level-properties>
</text:list-level-style-number>
<text:list-level-style-number text:level="3" text:style-name="Numbering_20_Symbols" style:num-suffix="."
style:num-format="1">
<style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
<style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="1in"
fo:text-indent="-0.25in"
fo:margin-left="1in"/>
</style:list-level-properties>
</text:list-level-style-number>
<text:list-level-style-number text:level="4" text:style-name="Numbering_20_Symbols" style:num-suffix="."
style:num-format="1">
<style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
<style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="1.25in"
fo:text-indent="-0.25in"
fo:margin-left="1.25in"/>
</style:list-level-properties>
</text:list-level-style-number>
<text:list-level-style-number text:level="5" text:style-name="Numbering_20_Symbols" style:num-suffix="."
style:num-format="1">
<style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
<style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="1.5in"
fo:text-indent="-0.25in"
fo:margin-left="1.5in"/>
</style:list-level-properties>
</text:list-level-style-number>
<text:list-level-style-number text:level="6" text:style-name="Numbering_20_Symbols" style:num-suffix="."
style:num-format="1">
<style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
<style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="1.75in"
fo:text-indent="-0.25in"
fo:margin-left="1.75in"/>
</style:list-level-properties>
</text:list-level-style-number>
<text:list-level-style-number text:level="7" text:style-name="Numbering_20_Symbols" style:num-suffix="."
style:num-format="1">
<style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
<style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="2in"
fo:text-indent="-0.25in"
fo:margin-left="2in"/>
</style:list-level-properties>
</text:list-level-style-number>
<text:list-level-style-number text:level="8" text:style-name="Numbering_20_Symbols" style:num-suffix="."
style:num-format="1">
<style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
<style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="2.25in"
fo:text-indent="-0.25in"
fo:margin-left="2.25in"/>
</style:list-level-properties>
</text:list-level-style-number>
<text:list-level-style-number text:level="9" text:style-name="Numbering_20_Symbols" style:num-suffix="."
style:num-format="1">
<style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
<style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="2.5in"
fo:text-indent="-0.25in"
fo:margin-left="2.5in"/>
</style:list-level-properties>
</text:list-level-style-number>
<text:list-level-style-number text:level="10" text:style-name="Numbering_20_Symbols" style:num-suffix="."
style:num-format="1">
<style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
<style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="2.75in"
fo:text-indent="-0.25in"
fo:margin-left="2.75in"/>
</style:list-level-properties>
</text:list-level-style-number>
</text:list-style>
<text:list-style style:name="L2">
<text:list-level-style-bullet text:level="1" text:style-name="Bullet_20_Symbols" style:num-suffix="."
text:bullet-char="•">
<style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
<style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="0.5in"
fo:text-indent="-0.25in"
fo:margin-left="0.5in"/>
</style:list-level-properties>
</text:list-level-style-bullet>
<text:list-level-style-bullet text:level="2" text:style-name="Bullet_20_Symbols" style:num-suffix="."
text:bullet-char="◦">
<style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
<style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="0.75in"
fo:text-indent="-0.25in"
fo:margin-left="0.75in"/>
</style:list-level-properties>
</text:list-level-style-bullet>
<text:list-level-style-bullet text:level="3" text:style-name="Bullet_20_Symbols" style:num-suffix="."
text:bullet-char="▪">
<style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
<style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="1in"
fo:text-indent="-0.25in"
fo:margin-left="1in"/>
</style:list-level-properties>
</text:list-level-style-bullet>
<text:list-level-style-bullet text:level="4" text:style-name="Bullet_20_Symbols" style:num-suffix="."
text:bullet-char="•">
<style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
<style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="1.25in"
fo:text-indent="-0.25in"
fo:margin-left="1.25in"/>
</style:list-level-properties>
</text:list-level-style-bullet>
<text:list-level-style-bullet text:level="5" text:style-name="Bullet_20_Symbols" style:num-suffix="."
text:bullet-char="◦">
<style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
<style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="1.5in"
fo:text-indent="-0.25in"
fo:margin-left="1.5in"/>
</style:list-level-properties>
</text:list-level-style-bullet>
<text:list-level-style-bullet text:level="6" text:style-name="Bullet_20_Symbols" style:num-suffix="."
text:bullet-char="▪">
<style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
<style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="1.75in"
fo:text-indent="-0.25in"
fo:margin-left="1.75in"/>
</style:list-level-properties>
</text:list-level-style-bullet>
<text:list-level-style-bullet text:level="7" text:style-name="Bullet_20_Symbols" style:num-suffix="."
text:bullet-char="•">
<style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
<style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="2in"
fo:text-indent="-0.25in"
fo:margin-left="2in"/>
</style:list-level-properties>
</text:list-level-style-bullet>
<text:list-level-style-bullet text:level="8" text:style-name="Bullet_20_Symbols" style:num-suffix="."
text:bullet-char="◦">
<style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
<style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="2.25in"
fo:text-indent="-0.25in"
fo:margin-left="2.25in"/>
</style:list-level-properties>
</text:list-level-style-bullet>
<text:list-level-style-bullet text:level="9" text:style-name="Bullet_20_Symbols" style:num-suffix="."
text:bullet-char="▪">
<style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
<style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="2.5in"
fo:text-indent="-0.25in"
fo:margin-left="2.5in"/>
</style:list-level-properties>
</text:list-level-style-bullet>
<text:list-level-style-bullet text:level="10" text:style-name="Bullet_20_Symbols" style:num-suffix="."
text:bullet-char="•">
<style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
<style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="2.75in"
fo:text-indent="-0.25in"
fo:margin-left="2.75in"/>
</style:list-level-properties>
</text:list-level-style-bullet>
</text:list-style>
<text:list-style style:name="L3">
<text:list-level-style-number text:level="1" style:num-suffix=")" style:num-format="a">
<style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
<style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="0.5in"
fo:text-indent="-0.25in"
fo:margin-left="0.5in"/>
</style:list-level-properties>
</text:list-level-style-number>
<text:list-level-style-number text:level="2" text:style-name="Numbering_20_Symbols" style:num-suffix="."
style:num-format="1">
<style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
<style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="0.75in"
fo:text-indent="-0.25in"
fo:margin-left="0.75in"/>
</style:list-level-properties>
</text:list-level-style-number>
<text:list-level-style-number text:level="3" text:style-name="Numbering_20_Symbols" style:num-suffix="."
style:num-format="1">
<style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
<style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="1in"
fo:text-indent="-0.25in"
fo:margin-left="1in"/>
</style:list-level-properties>
</text:list-level-style-number>
<text:list-level-style-number text:level="4" text:style-name="Numbering_20_Symbols" style:num-suffix="."
style:num-format="1">
<style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
<style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="1.25in"
fo:text-indent="-0.25in"
fo:margin-left="1.25in"/>
</style:list-level-properties>
</text:list-level-style-number>
<text:list-level-style-number text:level="5" text:style-name="Numbering_20_Symbols" style:num-suffix="."
style:num-format="1">
<style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
<style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="1.5in"
fo:text-indent="-0.25in"
fo:margin-left="1.5in"/>
</style:list-level-properties>
</text:list-level-style-number>
<text:list-level-style-number text:level="6" text:style-name="Numbering_20_Symbols" style:num-suffix="."
style:num-format="1">
<style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
<style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="1.75in"
fo:text-indent="-0.25in"
fo:margin-left="1.75in"/>
</style:list-level-properties>
</text:list-level-style-number>
<text:list-level-style-number text:level="7" text:style-name="Numbering_20_Symbols" style:num-suffix="."
style:num-format="1">
<style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
<style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="2in"
fo:text-indent="-0.25in"
fo:margin-left="2in"/>
</style:list-level-properties>
</text:list-level-style-number>
<text:list-level-style-number text:level="8" text:style-name="Numbering_20_Symbols" style:num-suffix="."
style:num-format="1">
<style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
<style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="2.25in"
fo:text-indent="-0.25in"
fo:margin-left="2.25in"/>
</style:list-level-properties>
</text:list-level-style-number>
<text:list-level-style-number text:level="9" text:style-name="Numbering_20_Symbols" style:num-suffix="."
style:num-format="1">
<style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
<style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="2.5in"
fo:text-indent="-0.25in"
fo:margin-left="2.5in"/>
</style:list-level-properties>
</text:list-level-style-number>
<text:list-level-style-number text:level="10" text:style-name="Numbering_20_Symbols" style:num-suffix="."
style:num-format="1">
<style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
<style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="2.75in"
fo:text-indent="-0.25in"
fo:margin-left="2.75in"/>
</style:list-level-properties>
</text:list-level-style-number>
</text:list-style>
<style:page-layout style:name="pm1">
<style:page-layout-properties fo:page-width="8.5in" fo:page-height="11in" style:num-format="1"
style:print-orientation="portrait"
fo:margin-top="0.7874in"
fo:margin-bottom="0.7874in"
fo:margin-left="0.7874in"
fo:margin-right="0.7874in"
style:writing-mode="lr-tb"
style:footnote-max-height="0in">
<style:footnote-sep style:width="0.0071in" style:distance-before-sep="0.0398in"
style:distance-after-sep="0.0398in"
style:adjustment="left"
style:rel-width="25%"
style:color="#000000"/>
</style:page-layout-properties>
<style:header-style/>
<style:footer-style/>
</style:page-layout>
</office:automatic-styles>
<office:master-styles>
<style:master-page style:name="Standard" style:page-layout-name="pm1"/>
</office:master-styles>
<office:body>
<office:text>
<text:sequence-decls>
<text:sequence-decl text:display-outline-level="0" text:name="Illustration"/>
<text:sequence-decl text:display-outline-level="0" text:name="Table"/>
<text:sequence-decl text:display-outline-level="0" text:name="Text"/>
<text:sequence-decl text:display-outline-level="0" text:name="Drawing"/>
</text:sequence-decls>
<text:h text:style-name="Heading_20_1" text:outline-level="1">First heading</text:h>
<text:p text:style-name="Text_20_body">Some plain text here.</text:p>
<text:p text:style-name="Text_20_body">Next paragraph</text:p>
<text:p text:style-name="Text_20_body"/>
<text:p text:style-name="Text_20_body">One empty line above</text:p>
<text:h text:style-name="Heading_20_2" text:outline-level="2">Second heading</text:h>
<text:p text:style-name="Text_20_body">Some plain text. <text:span text:style-name="T1">Some bold text.</text:span>
</text:p>
<text:p text:style-name="P2"/>
<text:list xml:id="list1457411518" text:style-name="L1">
<text:list-item>
<text:p text:style-name="P3">Number one</text:p>
</text:list-item>
<text:list-item>
<text:p text:style-name="P3">Number two</text:p>
</text:list-item>
<text:list-item>
<text:p text:style-name="P3">Number three</text:p>
</text:list-item>
</text:list>
<text:p text:style-name="P1">Para</text:p>
<text:list xml:id="list853984970" text:style-name="L2">
<text:list-item>
<text:p text:style-name="P4">First item</text:p>
</text:list-item>
<text:list-item>
<text:p text:style-name="P4">Second item</text:p>
</text:list-item>
<text:list-item>
<text:p text:style-name="P4">Third item</text:p>
</text:list-item>
</text:list>
<text:p text:style-name="P1">Para 2</text:p>
<text:list xml:id="list1676333811" text:style-name="L3">
<text:list-item>
<text:p text:style-name="P5">
<text:span text:style-name="T2">Item a</text:span>
</text:p>
</text:list-item>
<text:list-item>
<text:p text:style-name="P5">
<text:span text:style-name="T2">Item b</text:span>
</text:p>
</text:list-item>
<text:list-item>
<text:p text:style-name="P5">
<text:span text:style-name="T2">Item c</text:span>
</text:p>
</text:list-item>
</text:list>
<text:p text:style-name="Text_20_body">
<text:span text:style-name="T2">Para 3</text:span>
</text:p>
<text:h text:style-name="Heading_20_3" text:outline-level="3">
<text:span text:style-name="T2">Third level head</text:span>
</text:h>
<text:p text:style-name="Text_20_body">
<text:span text:style-name="T2">4 whitespaces <![CDATA[before and 3]]> in between next line</text:span>
</text:p>
<!-- some comment -->
<text:p text:style-name="Text_20_body">
<text:span text:style-name="T2">
<text:s text:c="4"/>next line <text:s text:c="2"/>in between</text:span>
</text:p>
<text:p text:style-name="Text_20_body">
<text:span text:style-name="T2">2 tabs before and 3 in between next line</text:span>
</text:p>
<text:p text:style-name="Text_20_body">
<text:span text:style-name="T2">
<text:tab/>
<text:tab/>next line<text:tab/>
<text:tab/>
<text:tab/>in between</text:span>
</text:p>
</office:text>
</office:body>
</office:document>

View File

@@ -0,0 +1,20 @@
<?php
$dir = dirname( __FILE__ );
$dirParts = explode( DIRECTORY_SEPARATOR, $dir );
switch ( $dirParts[count( $dirParts ) - 3] )
{
case 'doc': require_once 'ezc/Base/base.php'; break; // pear
case 'trunk': require_once "$dir/../../../Base/src/base.php"; break; // svn
default: require_once "$dir/../../../Base/src/base.php"; break; // bundle
}
/**
* Autoload ezc classes
*
* @param string $className
*/
function __autoload( $className )
{
ezcBase::autoload( $className );
}
?>