C.2. Documentation File Formatting

C.2.1. XML Tags

Each manual file must include the following XML declarations at the top of the file:

<?xml version="1.0" encoding="UTF-8"?>
<!-- Reviewed: no -->

XML files from translated languages must also include a revision tag containing the revision of the corresponding English-language file the translation was based on.

<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 14978 -->
<!-- Reviewed: no -->

C.2.2. Maximum Line Length

The maximum line length, including tags, attributes, and indentation, is not to exceed 100 characters. There is only one exception to this rule: attribute/value pairs are allowed to exceed the 100 chars as they are not allowed to be seperated.

C.2.3. Indentation

Indentation should consist of 4 spaces. Tabs are not allowed.

Tags which are at the same level must have the same indentation.

<sect1>
</sect1>

<sect1>
</sect1>

Tags which are one level under the previous tag must be indented with 4 additional spaces.

<sect1>
    <sect2>
    </sect2>
</sect1>

Multiple block tags within the same line are not allowed; multiple inline tags are allowed, however.

<!-- NOT ALLOWED: -->
<sect1><sect2>
</sect2></sect1>

<!-- ALLOWED -->
<para>
    <code>Zend_Magic</code> does not exist. <code>Zend_Acl</code> does.
</para>

C.2.4. Line Termination

Line termination follows the Unix text file convention. Lines must end with a single linefeed (LF) character. Linefeed characters are represented as ordinal 10, or hexadecimal 0x0A.

Note: Do not use carriage returns (CR) as is the convention in Apple OS's (0x0D) or the carriage return - linefeed combination (CRLF) as is standard for the Windows OS (0x0D, 0x0A).

C.2.5. Empty tags

Empty tags are not allowed; all tags must contain text or child tags.

<!-- NOT ALLOWED -->
<para>
    Some text. <link></link>
</para>

<para>
</para>

C.2.6. Usage of whitespace within documents

C.2.6.1. Whitespace within tags

Opening block tags should have no whitespace immediately following them other than line breaks (and indentation on the following line).

<!-- NOT ALLOWED -->
<sect1>WHITESPACE
</sect1>

Opening inline tags should have no whitespace immediately following them.

<!-- NOT ALLOWED -->
This is the class <classname> Zend_Class</classname>.

<!-- OK -->
This is the class <classname>Zend_Class</classname>.

Closing block tags may be preceded by whitespace equivalent to the current indentation level, but no more than that amount.

<!-- NOT ALLOWED -->
    <sect1>
     </sect1>

<!-- OK -->
    <sect1>
    </sect1>

Closing inline tags must not be preceded by any whitespace.

<!-- NOT ALLOWED -->
This is the class <classname>Zend_Class </classname>

<!-- OK -->
This is the class <classname>Zend_Class</classname>

C.2.6.2. Multiple line breaks

Multiple line breaks within or between tags are not allowed.

<!-- NOT ALLOWED -->
<para>
    Some text...

    ... and more text
</para>


<para>
    Another paragraph.
</para>

<!-- OK -->
<para>
    Some text...
    ... and more text
</para>

<para>
    Another paragraph.
</para>

C.2.6.3. Separation between tags

Tags at the same level must be separated by an empty line to improve readability.

<!-- NOT ALLOWED -->
<para>
    Some text...
</para>
<para>
    More text...
</para>

<!-- OK -->
<para>
    Some text...
</para>

<para>
    More text...
</para>

The first child tag should open directly below its parent, with no empty line between them; the last child tag should close directly before the closing tag of its parent.

<!-- NOT ALLOWED -->
<sect1>

    <sect2>
    </sect2>

    <sect2>
    </sect2>

    <sect2>
    </sect2>

</sect1>

<!-- OK -->
<sect1>
    <sect2>
    </sect2>

    <sect2>
    </sect2>

    <sect2>
    </sect2>
</sect1>

C.2.7. Program Listings

The opening <programlisting> tag must indicate the appropriate "language" attribute and be indented at the same level as its sibling blocks.

<para>Sibling paragraph.</para>

<programlisting language="php"><![CDATA[

CDATA should be used around all program listings.

<programlisting> sections must not add linebreaks or whitespace at the beginning or end of the section, as these are then represented in the final output.

<!-- NOT ALLOWED -->
<programlisting language="php"><![CDATA[

$render = "xxx";

]]></programlisting>

<!-- OK -->
<programlisting language="php"><![CDATA[
$render = "xxx";
]]></programlisting>

Ending CDATA and <programlisting> tags should be on the same line, without any indentation.

<!-- NOT ALLOWED -->
    <programlisting language="php"><![CDATA[
$render = "xxx";
]]>
    </programlisting>

<!-- NOT ALLOWED -->
    <programlisting language="php"><![CDATA[
$render = "xxx";
    ]]></programlisting>

<!-- OK -->
    <programlisting language="php"><![CDATA[
$render = "xxx";
]]></programlisting>

The <programlisting> tag should contain the "language" attribute with a value appropriate to the contents of the program listing. Typical values include "css", "html", "ini", "javascript", "php", "text", and "xml".

<!-- PHP -->
<programlisting language="php"><![CDATA[

<!-- Javascript -->
<programlisting language="javascript"><![CDATA[

<!-- XML -->
<programlisting language="xml"><![CDATA[

For program listings containing only PHP code, PHP tags (e.g., "<?php", "?>") are not required, and should not be used. They simply clutter the narrative, and are implied by the use of the <programlisting> tag.

<!-- NOT ALLOWED -->
<programlisting language="php"<![CDATA[<?php
    // ...
?>]]></programlisting>

<programlisting language="php"<![CDATA[
<?php
    // ...
?>
]]></programlisting>

Line lengths within program listings should follow the coding standards recommendations.

Refrain from using require_once(), require(), include_once(), and include() calls within PHP listings. They simply clutter the narrative, and are largely obviated when using an autoloader. Use them only when they are essential to the example.

[Note] Never use short tags

Short tags (e.g., "<?", "<?=") should never be used within programlisting or the narrative of a document.

C.2.8. Notes on specific inline tags

C.2.8.1. classname

The tag <classname> must be used each time a class name is represented by itself; it should not be used when combined with a method name, variable name, or constant, and no other content is allowed within the tag.

<para>
    The class <classname>Zend_Class</classname>.
</para>

C.2.8.2. varname

Variables must be wrapped in the <varname> tag. Variables must be written using the "$" sigil. No other content is allowed within this tag, unless a class name is used, which indicates a class variable.

<para>
    The variable <varname>$var</varname> and the class variable
    <varname>Zend_Class::$var</varname>.
</para>

C.2.8.3. methodname

Methods must be wrapped in the <methodname> tag. Methods must either include the full method signature or at the least a pair of closing parentheses (e.g., "()"). No other content is allowed within this tag, unless a class name is used, which indicates a class method.

<para>
    The method <methodname>foo()</methodname> and the class method
    <methodname>Zend_Class::foo()</methodname>. A method with a full signature:
    <methodname>foo($bar, $baz)</methodname>
</para>

C.2.8.4. constant

Use the <constant> tag when denoting constants. Constants must be written in UPPERCASE. No other content is allowed within this tag, unless a class name is used, which indicates a class constant.

<para>
    The constant <constant>FOO</constant> and the class constant
    <constant>Zend_Class::FOO</constant>.
</para>

C.2.8.5. filename

Filenames and paths must be wrapped in the <filename> tag. No other content is allowed in this tag.

<para>
    The filename <filename>application/Bootstrap.php</filename>.
</para>

C.2.8.6. command

Commands, shell scripts, and program calls must be wrapped in the <command> tag. If the command includes arguments, these should also be included within the tag.

<para>
    Execute <command>zf.sh create project</command>.
</para>

C.2.8.7. code

Usage of the <code> tag is discouraged, in favor of the other inline tasks discussed previously.

C.2.9. Notes on specific block tags

C.2.9.1. title

The <title> tag is not allowed to hold other tags.

<!-- NOT ALLOWED -->
<title>Using <classname>Zend_Class</classname></title>

<!-- OK -->
<title>Using Zend_Class</title>