JBoss.orgCommunity Documentation
Copyright © 2009 Red Hat Inc.
Abstract
The guide contains information relating to the ongoing maintenance of the Mobicents Community Documentation Suite. The guide discusses the current state of the documentation, explains the writing standards currently used in the guides, the structure of the guides in the GCode SVN repository, and provides some quick-start help for community authors in getting accustomed to XML authoring.
This document is licenced under the Creative Commons CC-BY-SA licence. You are welcome to utilise any content contained in this user guide according to the terms of this licence.
This manual uses several conventions to highlight certain words and phrases and draw attention to specific pieces of information.
In PDF and paper editions, this manual uses typefaces drawn from the Liberation Fonts set. The Liberation Fonts set is also used in HTML editions if the set is installed on your system. If not, alternative but equivalent typefaces are displayed. Note: Red Hat Enterprise Linux 5 and later includes the Liberation Fonts set by default.
Four typographic conventions are used to call attention to specific words and phrases. These conventions, and the circumstances they apply to, are as follows.
Mono-spaced Bold
Used to highlight system input, including shell commands, file names and paths. Also used to highlight key caps and key-combinations. For example:
To see the contents of the file
my_next_bestselling_novelin your current working directory, enter thecat my_next_bestselling_novelcommand at the shell prompt and press Enter to execute the command.
The above includes a file name, a shell command and a key cap, all presented in Mono-spaced Bold and all distinguishable thanks to context.
Key-combinations can be distinguished from key caps by the hyphen connecting each part of a key-combination. For example:
Press Enter to execute the command.
Press Ctrl+Alt+F1 to switch to the first virtual terminal. Press Ctrl+Alt+F7 to return to your X-Windows session.
The first sentence highlights the particular key cap to press. The second highlights two sets of three key caps, each set pressed simultaneously.
If source code is discussed, class names, methods, functions, variable names and returned values mentioned within a paragraph will be presented as above, in Mono-spaced Bold. For example:
File-related classes include
filesystemfor file systems,filefor files, anddirfor directories. Each class has its own associated set of permissions.
Proportional Bold
This denotes words or phrases encountered on a system, including application names; dialog box text; labeled buttons; check-box and radio button labels; menu titles and sub-menu titles. For example:
Choose from the main menu bar to launch Mouse Preferences. In the Buttons tab, click the Left-handed mouse check box and click to switch the primary mouse button from the left to the right (making the mouse suitable for use in the left hand).
To insert a special character into a gedit file, choose from the main menu bar. Next, choose from the Character Map menu bar, type the name of the character in the Search field and click . The character you sought will be highlighted in the Character Table. Double-click this highlighted character to place it in the Text to copy field and then click the button. Now switch back to your document and choose from the gedit menu bar.
The above text includes application names; system-wide menu names and items; application-specific menu names; and buttons and text found within a GUI interface, all presented in Proportional Bold and all distinguishable by context.
Note the shorthand used to indicate traversal through a menu and its sub-menus. This is to avoid the difficult-to-follow 'Select from the sub-menu in the menu of the main menu bar' approach.
or
Mono-spaced Bold Italic
Proportional Bold Italic
Whether Mono-spaced Bold or Proportional Bold, the addition of Italics indicates replaceable or variable text. Italics denotes text you do not input literally or displayed text that changes depending on circumstance. For example:
To connect to a remote machine using ssh, type
sshat a shell prompt. If the remote machine isusername@domain.nameexample.comand your username on that machine is john, typessh john@example.com.The
mount -o remountcommand remounts the named file system. For example, to remount thefile-system/homefile system, the command ismount -o remount /home.To see the version of a currently installed package, use the
rpm -qcommand. It will return a result as follows:package.package-version-release
Note the words in bold italics above username, domain.name, file-system, package, version and release. Each word is a placeholder, either for text you enter when issuing a command or for text displayed by the system.
Aside from standard usage for presenting the title of a work, italics denotes the first use of a new and important term. For example:
When the Apache HTTP Server accepts requests, it dispatches child processes or threads to handle them. This group of child processes or threads is known as a server-pool. Under Apache HTTP Server 2.0, the responsibility for creating and maintaining these server-pools has been abstracted to a group of modules called Multi-Processing Modules (MPMs). Unlike other modules, only one module from the MPM group can be loaded by the Apache HTTP Server.
Two, commonly multi-line, data types are set off visually from the surrounding text.
Output sent to a terminal is set in Mono-spaced Roman and presented thus:
books Desktop documentation drafts mss photos stuff svn books_tests Desktop1 downloads images notes scripts svgs
Source-code listings are also set in Mono-spaced Roman but are presented and highlighted as follows:
package org.jboss.book.jca.ex1;
import javax.naming.InitialContext;
public class ExClient
{
public static void main(String args[])
throws Exception
{
InitialContext iniCtx = new InitialContext();
Object ref = iniCtx.lookup("EchoBean");
EchoHome home = (EchoHome) ref;
Echo echo = home.create();
System.out.println("Created Echo");
System.out.println("Echo.echo('Hello') = " + echo.echo("Hello"));
}
}
Finally, we use three visual styles to draw attention to information that might otherwise be overlooked.
A Warning should not be ignored. Ignoring warnings will most likely cause data loss.
Important boxes detail things that are easily missed: configuration changes that only apply to the current session, or services that need restarting before an update will apply. Ignoring Important boxes won't cause data loss but may cause irritation and frustration.
A note is a tip or shortcut or alternative approach to the task at hand. Ignoring a note should have no negative consequences, but you might miss out on a trick that makes your life easier.
If you find a typographical error in this manual, or if you have thought of a way to make this manual better, we would love to hear from you! Please submit a documentation issue using the Mobicents GCode Issue Tracker: http://code.google.com/p/mobicents/issues/list against the product Mobicents.
When submitting a bug report, be sure to mention the manual's identifier: Mobicents_Community_Documentation
If you have a suggestion for improving the documentation, try to be as specific as possible when describing it. If you have found an error, please include the section number and some of the surrounding text so we can find it easily.
The Mobicents User Documentation Suite (UDS) is the formalized source of product user documentation for the Mobicents Community Project. Within the UDS, a user can learn how to install the platform, or individual servers. Server-specific features are located within each server guide and include examples that can help new users become accustomed to the functionality offered by the product suite.
The UDS is written in eXtensible Markup Language (XML) and uses the DocBook DTD to control guide structure. The documentation is published to HTML-Single format using the Publican Tool chain and Maven JDocBook, and hosted on the Hudson Build Server for public viewing and comment.
Originally, the UDS was delivered to the user through multiple sources such as Wiki pages and static documents. The information was hosted in different locations.
The separate information sources were merged into a single Wiki source, hosted on the mobicents-public Google group. Once the information was merged into mobicents-public, the developers had a single place to communicate with the end users of the platform.
As the Mobicents product matured, the requirement for formalized single-source documentation became apparent. When Red Hat acquired the project, the process of merging the content into a single XML repository began.
During the conversion process from Wiki to XML, the UDS was managed exclusively by Red Hat Technical Writers. Red Hat writers took the developer content and converted it into XML user documentation, adding to the existing content where the need existed. Those areas under development in the UDS were linked back to the mobicents-public forum, so readers did not encounter an information dead-end.
The documentation suite evolved to a point where the Mobicents Community Project team expressed interest in self-managing the community documentation, and hosting it on the GCode SVN repository. This decision simplified the way the team controlled the versioning of user guide content, and allowed the documentation to be branched when the development cycle dictated. It also assisted the Red Hat Technical Writers in developing the product documentation for the JBoss Communication Platform.
Red Hat has productized the community project, and ships the JBoss Communications Platform (JBCP) to Red Hat customers. The Mobicents UDS forms the backbone of the JBCP Product Documentation. The community project and the Red Hat writers work closely to ensure the correct information appears in the Product User Documentation.
The Mobicents team is comprised of a geographically dispersed group of contributors.
In some cases, team members are responsible for a number of projects within the Mobicents ecosystem.
Table 1.1. Mobicents Team Members Role
| Name | Location | Team | |
|---|---|---|---|
| Ivelin Ivanov | Austin, Texas | Development Manager and Founder |
<ivelin.atanasoff.ivanov@gmail.com>
|
| Vladimir Ralev | Republic of Bulgaria | SIP Servlets Server Developer |
<vladimir.ralev@gmail.com>
|
| Eduardo Martins | Sesimbra, Portugal | JAIN SLEE Server & SIP Presence Service Lead |
<emmartins@gmail.com>
|
| Jean Deurelle | France | SIP Servlets Server Lead |
<jean.deruelle@gmail.com>
|
| Oleg Kulikov | Volgograd, Russian Federation | Media Server Lead |
<oleg.kulikoff@gmail.com>
|
| Amit Bhayani | Pune, India | Media Server Developer |
<amit.bhayani@gmail.com>
|
| Luis Barreiro | Portugal | QE Lead and Hudson Build Server Maintainer |
<lbbbarreiro@gmail.com>
|
| Alexandre Mendonça | Lisbon, Portugal | Diameter Lead, JAIN SLEE Server Developer |
<brainslog@gmail.com>
|
| Bartosz Baranowski | Warsaw, Poland | Media Server Developer, Diameter Developer, JAIN SLEE Server Developer |
<baranowb@gmail.com>
|
| Pavel Šlégr | Brno, Czech Republic | Productization Lead |
<pslegr@redhat.com>
|
| Rob Cardwell | McLean, VA, USA | Program Manager |
<rcardwel@redhat.com>
|
| Mr Vicky Kak | India | JBCP GSS Product Support |
<vkak@redhat.com>
|
Because the team is so geographically dispersed, some challenges can exist when trying to communicate with the different server teams. To ensure that you have the best chance of obtaining the information you require, a number of different methods exist to reach out to the development team.
Internet Relay Chat (IRC) is used extensively throughout many JBoss projects as an effective communication tool; Mobicents is no exception. The main server the developers use is through the codehaus.org IRC server. The required information to connect to this server is listed for reference:
Server name = irc.codehaus.org
Room name = #mobicents
Password = no password is required for this server.
Depending on the connection load of the codehaus.org server (which serves multiple projects and rooms), the team may have to switch over to the java chat freenode.net server. The freenode.net server offers a java IRC interface which requires no IRC client configuration. The address for this service is http://java.freenode.net//index.php?channel=mobicents. If you want to use the IRC service through an IRC Chat client (such as XChat, or Pidgin), you will need the following information to connect to the server:
Server name = niven.freenode.net
Room name = #mobicents
Password = no password is required for this server.
A number of meetings are held each week to share information openly within the team.
The entire Mobicents Development Team meet weekly to discuss Mobicents and JBCP issues. The meeting time is Wednesday 15:30 UTC.
The meeting is held in the Codehaus IRC #mobicents room (depending on the number of connections available). If irc.codehaus.org has reached connection capacity, the meeting takes place on the Freenode #mobicents room. The team will post a notification in the Codehaus room if the meeting location is relocated.
Minutes from the weekly meeting are posted to the mobicents-public forum.
Currently, the productization lead and the Red Hat technical writer meet to discuss any issues relating to product documentation and pending releases. This meeting occurs at 9am Brno, Czech Republic time (5.00pm Brisbane, Australia time) every second Tuesday. Contact Pavel Slegr, the productization lead, to determine the next scheduled meeting time.
Keep emails as short, and concise, as possible. Past experience, and direct feedback from the team, indicates it is much easier for developers to quickly scan an email for relevance to them if received in this format.
If you know the question relates to a server team, or individual, send the email directly to them, and carbon copy the Red Hat JBCP email list (jbcp-dev@redhat.com), so the rest of the team is informed.
If an answer is required to your email, make it clear that you expect a response. It can be effective to put "Feedback Required" in the subject line to flag the email to developers.
For Red Hat related issues, such as product documentation or strategic planning discussions, all correspondence must be routed through Red Hat email accounts.
There are two Google Group forums that are monitored by the Mobicents Developers:
Both forums use a G-mail account for access. It is recommended that you create a new G-mail account for the sole purpose of accessing the Mobicents forums. If you subscribe to the daily digests or emails, the email traffic is excessive.
This high-traffic forum is the publicly accessible forum, used by the community to ask questions about configuring the platform. Often, discussion threads from mobicents-public will be used as a development barometer for new feature priorities and bug fix priorities. The Mobicents Team Meeting logs are posted to this forum so the community is informed about the project happenings.
This forum is a membership-only forum, for the exclusive use of Mobicents developers and vetted individuals (such as Red Hat Content Authors). The forum is used to discuss private project-related issues not suitable for public consumption. You must submit an application to get access to the forum.
The Mobicents User Documentation Suite (UDS) is stored in the Mobicents Google Code Subversion repository(GCode SVN) .
Because the GCode SVN contains the source code for the Mobicents, and JBCP Platform, the repository is available to the public in read-only format. For contributors to make changes to the repository in any way, the Mobicents project must grant specific read-write permissions to the contributor's nominated Google account.
To obtain read-write access, notify one of the project owners listed on the Google Code Project Home Page. Ensure the Google account information is included in the request.
The most recent commit of the User Guide is located in the /trunk directory. Within this directory, each user guide is separated into the server folder to which it belongs. Click on the links in the list to inspect the document repository structure.
In all docs directories, there is an en-US folder. This folder contains all the XML files that are required for the User Guide. For more information regarding the files contained in this directory, refer to Section 4.1.1, “XML Book Components”
The exception to this is the single XML file prefixed with all-. For example, in the sip-servlets-docs repository, the file is named all-SIP_Servlets_Server_User_Guide.xml. This file is used by Maven JDocBook to produce the documentation that is hosted on the Hudson Build Server.
For the SIP Presence Service, this file is not required. In future, all server streams will not require this file, because the Maven build process will automatically build the documents from the latest SVN snapshot. Until this process has been implemented, the all- file is required.[user_guide_name].xml
Never incorporate changes directly into the all- file. Updating this file with documentation changes will result in lost work. [user_guide_name].xml
Update the individual XML files that comprise the User Guide. Changes made in individual files are merged into the all-*.xml file as part of the Authoring process.
Documentation for Mobicents and JBCP are hosted on publically accessible sites. This provides the community an opportunity to review and comment on the documentation, and can help with discovering bugs within the documentation.
The Mobicents Platform docs are built and hosted on the JBoss.org Hudson build server.
Currently an automated publishing job named "MobicentsBooks" generates the community documentation daily. All HTML single user guides can be accessed from the job directly at http://hudson.jboss.org/hudson/job/MobicentsBooks/lastSuccessfulBuild/artifact/.
The JBoss Communication Platform user documentation is hosted on redhat.com/docs. A JBCP homepage is available that lists all server guides that have been released over the lifespan of the product.
To maintain language consistency within the source documentation, it is important for each content author to write in a similar tone. Maintaining consistent tone throughout the user guides will make the Mobicents and JBCP User Documentation Suite (UDS) appear to be a unified suite of documents, rather than a separated group of user guides.
The reader will subconciously notice the consistency, will be able to easily process the information contained within the user guide, and will appreciate the effort you have put in to keeping the writing style professional and consistent (even though they may not tell you directly).
The Mobicents and JBCP UDS uses the English (US), or en-US dictionary. Ensure that you follow the requirements of this dictionary when writing content for the UDS.
Use the active voice ("Start Linuxconf by typing...") rather than passive ("Linuxconf can be started by typing...") whenever possible. Active voice makes for more lively, interesting reading.
Avoid future tense (or using the term "will") whenever possible For example, future tense ("The screen will display...") does not read as well as an active voice ("The screen displays").
Remember, the users you are writing for most often refer to the documentation while they are using the system, not after or in advance of using the system.
Do not use gender-specific pronouns in documentation. It is far less awkward to read a sentence that uses "they" and "their" rather than "he/she" and "his/hers".
It is fine to use "you" when giving instructions and "the user," "new users," etc. in more general explanations. Never use "one" in place of "you" when writing technical documentation. Using "one" is far too formal.
A sentence is one, complete thought. A sentence expresses something about a subject (a person, place, or thing) and a verb (what the subject is or does). There are two common problems that occur in sentence construction: Sentence fragments and run-on sentences.
A sentence fragment is a sentence which cannot stand by itself; that is, it's out of context with the surrounding sentences.
Example 3.1. Full, and Fragment Sentences
"We will release no upgrade before its time."
"We will release no upgrade. At least, before its time."
Notice that the second sentence can not stand on its own if it is isolated from the first sentence.
Read each sentence you write aloud, as if each sentence were the "only" sentence on a piece of paper. If you hear a sentence that would not make sense all by itself, chances are you have got a sentence fragment. Change the fragment sentence to make it a complete thought.
Two or more complete ideas that are joined without punctuation create a run-on sentence (also called a fused sentence). The sentence does not have to be long to be a run-on (although the longer your sentence, the more difficult it is to read).
Example 3.2. Run-on Sentences
The CDs both of which belonged to the developers were in the test lab.
The CDs, both of which belonged to the developers, were in the test lab.
The CDs, both of which belonged to the developers, were in the test lab, and because they were the only available CDs for the new release, the developers were anxious about keeping them clean.
The CDs, both of which belonged to the developers, were in the test lab. Because they were the only available CDs for the new release, the developers were anxious about keeping them clean
In the complex run-on, the previous run-on sentence was technically correct because of the punctuation; however, it could have been broken to help readability.
It is often tempting to write like you are talking to someone face to face. It is an easy way of writing, and allows you to write using a stream of consciousness method.
The problem with this type of writing style, is that it is very hard for the reader to quickly grasp a concept. They must read through the content and try to extract the information that is relevant to them from the information you have provided them. The writing style often leads to verbosity (or wordiness) and this can quickly frustrate readers.
The following examples will show you how pruning your writing can cut down the word count, and allow readers to easily understand the information they are reading.
Example 3.3. Reordering and Restructuring for Readability
This example shows how how you can increase the readability of the information by cutting out unnecessary words and restructuring content.
As the SIP Servlets Server employs JBoss Application Server as its servlet container and takes advantage of its capabilities, including clustering and failover, familiarity with the basics of JBoss Clustering is helpful. Refer to this chapter in the Clustering Guide for background or if you wish to dig further: JBoss Application Server Clustering Guide.
To further understand the complete clustering and failover capabilities of the JBoss Application Server, refer to the JBoss Application Server Clustering Guide.
After the edit, notice how concise the paragraph is. Also notice how the colloquialism in the reference has been removed. Depending on the reader's language skills, the usage of "dig further" might not be understood. When this is translated to other languages, the meaning of this sentence might also be lost in translation.
Example 3.4. Writing Like You Are Speaking
This example demonstrates how writing like you are speaking can result in unordered concepts, and reduces the effectiveness of the information you are writing about.
An important note here with regard to that second scenario that according to the SIP Servlets 1.1 specification, Sections 15.1.2 The Role of Applications and 15.1.4 Application Independence, the Call Blocking application cannot just do nothing with the request and expect the container to route the request in its place (either to a next application in chain if another one is present or to the outside world if none is present). The Application has to do something with request (either proxy it or act as a UAS)
For the second scenario, the Call Blocking application must be responsible for routing the request to the next chained application (internally) or to the outside world (externally). The application must either proxy, or act as a User Agent Server (UAS), for the request. This requirement is stated in greater detail within the SIP Servlets 1.1 specification's "The Role of Applications" and "Application Independence" sections.
In the original wording, the main point (that the application must handle the routing, and how it must do this) was right at the end of the paragraph. In the suggested wording, the application requirement has been moved up to the front of the paragraph. This allows the reader to quickly decide whether the information relates to them. The references, which were interrupting the sentence flow, are now at the end of the paragraph.
The UDS XML is structured in such a way that it can be published using Maven JDocBook and Publican. Maven, and the JDocBook plug-in are used to produce the community branded XML content, and to produce XML that is used by Publican to produce the Red Hat branded product documentation.
The Publican Toolchain is a set of Linux utilities that work in concert to validate, and publish XML to various output formats. Publican is used by Red Hat's Engineering Content Services division as the de-facto standard for producing product documentation according to brand, and translation, requirements.
For a complete guide to Publican, including installation instructions and commands, visit the Publican home page on fedorapeople.com. This page contains, among other information, the User Guide for Publican. The user guide is compatible with Version 0.39 and above.
Each book in the UDS is constructed using a standardized structure, to maintain consistency throughout the project. The structure present as of September 2009 follows the Publican Toolchain directory structure. Table 4.1, “Book Components” describes the mandatory files that must be present, including a description of the file contents, and where the XML file is embedded into the finished user guide.
Table 4.1. Book Components
| XML Book Component | Description | Order of Component in the Book |
|---|---|---|
| Contains the structure of the user guide, represented by xi:include references to each chapter-[Chapter_Name].xml component, and other mandatory components in this table. | Top Level (or Parent) component of any user guide. |
Book_Info.xml
| Contains information about the book title, book version number, abstract and copyright information. | 1st Child. This is the opening information a reader will see in the user guide. |
Author_Group.xml
| Contains contact information about the authors that contributed to the content of the book. | 2nd Child. This component is included in the Book_Info.xml component. |
Preface.xml
| Contains pre-defined content explaining the typographical standards used in the guide, and other information that will assist the reader with using the guide. | 3rd Child. This component is included after the Book_Info.xml content. |
chapter-
| Contains XML markup and content included at a Chapter level in the document. The XML file is named only for human-readability. | 4th. This is the top level element for each chapter in the user guide. The order of these files in the file determines the structure of the guide. |
section-
| Contains XML markup and content included at a Section level in the document. The XML file is named only for human-readability. | 5th. This component is included in chapter- files by xi:include reference. |
Revision History.xml
| Contains a record of the revisions made to the document over time. Top-level information about changes in the guide are provided to the reader. | 6th. |
To ensure Maven JDocBook can publish the content generated by the Publican Tool chain, additional XML content is required. Maven JDocBook does not have access to the Publican Tool chain common_content directory. The required XML files must be included as xi:fallback references in the preface.xml and book_info.xml files.
The content is contained within XML files in the fallback_content directory of each user guide repository. The fallback_content directory contains copies of the XML files located in the /usr/share/publican/Common_Content directory.
The front-matter information located in the fallback_content directory of each user guide repository, is not maintained by the Publican Tool chain Team, or upgraded when Publican updates are installed. Therefore, manually verify that the information contained in these files are kept current with the standards present in the latest Publican Tool chain version.
Fallback content is added to each xi:include element that Maven JDocBook does not have access to. The structure described in the following XML sample is for the Legal_Notice.xml information in the Book_Info.xml file.
<!--FOR PUBLICAN -->
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="Common_Content/Legal_Notice.xml">
<!--FOR JDOCBOOK:-->
<xi:fallback xmlns:xi="http://www.w3.org/2001/XInclude">
<xi:include href="fallback_content/Legal_Notice.xml"
xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
</xi:fallback>
</xi:include>
The xi:include element can have any number of xi:fallback elements defined. However, in the Mobicents UDS only one fallback is required.
Table 4.2. Maven JDocBook Content
| XML Component | Description | Order of Component in the Book |
|---|---|---|
Conventions.xml
| Contains typographical standards used within the guide. | Inserted by xi:fallback reference at the end of the Preface.xml file. |
Feedback.xml
| Contains information about how to raise a bug against the JBCP user documentation. | Inserted by xi:fallback reference at the end of the Preface.xml file. |
Legal_Notice.xml
| Contains standardized Red Hat legal information. | Inserted by xi:fallback reference at the end of the Book_Info.xml file |
For Linux users, a bash script is available that allows common Publican commands to be substituted with abridged commands. The script is called mkbk (short for make book). You must have Publican installed and configured before running this script; Publican is a dependency.
The script is contained in the source folder for this user guide. To obtain this script, check out the Mobicents_Community_Documentation directory from the GCode SVN.
mkbk [book_name] [condition] [output]
Where:
[book_name] is the abbreviated name of the XML User Guide to publish:
dia = "Diameter_User_Guide"
jss = "JAIN_SLEE_Server_User_Guide"
ms = "Media_Server_User_Guide"
mcd = "Mobicents_Community_Documentation"
pig = "Platform_Installation_Guide"
sps = "SIP_Presence_Service_User_Guide"
sss = "SIP_Servlets_Server_User_Guide"
[condition] is one of the following options:
mob = Mobicents Community Documentation
jbcp = JBCP Product Documentation
[output] is one of the following Publican output types:
html-single-en-US = Output HTML Single English User Guide
pdf-en-US = Output PDF English User Guide
xml-en-US - Output XML files that can be used for troubleshooting XML structure errors.
To use the script, you must open a terminal and navigate to the user guide directory that contains the en-US folder for the book. From this directory, the mkbk script can correctly call publican as part of executing the script.
mkbk test tests the book for XML structure errors.
mkbk sss jbcp html-single-en-US publishes the SIP Servlets Server User Guide to Red Hat Style standards.
mkbk sss mob xml-en-US validates the SIP Servlet Server User Guide, and creates the all-SIP_Servlets_Server_User_Guide.xml file used by Maven to publish the community documentation.
The jbcp option does not work if you want to create the all- file. You must use the [user_guide_name].xmlmob option to create this file.
You can use the mkbk command when your user guide cannot be published using Publican. This command executes the xmllint tool, which is called with specific settings: include xi:include references, and user defined entities; validate XML; do not abort when an error is located. [book_name] mob xml-en-US
This process creates the all- file, which is an amalgameted, single file containing all chapters and sections of your book in one file. You can open the [user_guide_name].xmlall- file in XML Copy Editor (or another XML Editor with built in validation), and validate the file to determine where the invalid mark-up is within the file. You can then open the original chapter or section, and correct the structure error. [user_guide_name].xml
Throughout the UDS, Maven variables are used to substitute values when Maven builds the documentation. The values that are substituted into the documentation by Maven include version numbers, installation paths, and product names. What information is substituted for each variable, largely depends on whether the deliverable is for Mobicents or JBCP.
Table 4.3, “SIP Presence Service Maven Variables” lists the Maven variables used within the SIP Presence Service, and explains what each one represents.
Table 4.3. SIP Presence Service Maven Variables
| Variable Name | Description | Substituted Values (if applicable) |
|---|---|---|
| ${platform.name} | Substitutes the Platform name, based on whether the documentation is being produced for Mobicents or JBCP. | Mobicents, JBCP |
| ${bookid} | Substitutes the Book ID, which is used to populate the book identifier in the preface. The Book ID is necessary for readers to uniquely identify the book when raising documentation tickets. | doc-[book_name]. For example, doc-SIP_Servlets_Server_User_Guide. |
| ${release.integrated.filename} | Substitutes the Binary filename for the release, based on the binary file nomenclature for the community and product. | |
| ${release.xdms.filename} | Specific to the XML Document Management Server, the binary file name for the release based on the binary file nomenclature for the community and product. | |
| ${version} | Substitutes the product version number for the release. This variable is used to substitute the version numbers in all path names. |
At this stage, not all book have been "Mavenized". The Single Source Docs Project is in the early stages, and further testing must be undertaken before the strategy is fully realized.
If you want to view how the latest all-[user_guide_name].xml looks when published to Hudson, you can run Maven locally and produce the HTML Single file on demand.
You must have Maven installed and configured. If you have not yet configured Maven locally, you can find basic instructions in the Publican-JDocBook User Guide, available from the Red Hat SVN.
The Maven command to publish books to HTML Single is listed below for reference.
mvn compile -Denv.DOCNAME="[user_guide_name]" -Phtml-singleThe [user_guide_name] is the same as the book names called by the mkbk script. The command is also provided as a comment in the mkbk script. For more information regarding the mkbk script, refer to Section 4.1.1.1, “Script for Publishing”.
The Mobicents User Documentation Suite is authored entirely in XML. For someone starting out with XML, there are many things to consider. What is the best authoring tool to use? What elements, and structure is definitely valid in Publican? How do I create screenshots that scale correctly?
This chapter discusses a number of helpful tips that will help new content authors produce valid, professional-looking XML documentation.
While you can write XML using a basic text editor, the easiest way to author XML is by using an XML Authoring Tool. A good XML Authoring Tool can auto-complete structure for you, and most importantly, validate the XML content you have written to ensure it is well-formed and valid to the standard.
The number of XML authoring tools available can seem daunting to a first-time content author. The following applications will help you to get started with XML authoring, and ease your transition into the world of structured authoring.
Syntext offer a What You See Is What You Get (WYSIWYG) XML editor called Serna Free .
This editor hides much of the complexity of XML authoring, and lets you focus on authoring the content. You still must have good knowledge of XML structure, because the application still requires you to select the right parent tag before it can auto-complete subsequent selections. It is not aware of the specific tag requirements that Publican demands.
Serna is a cross-platform editor. By far, the best feature of this editor is the fact that you can open up the root XML file (for example, at the <book> level), and all xi:include links, cross-references, and graphics are opened up in the editor as one seamless file. This really helps with validation, and makes linking between chapters and sections easy.
Serna Free can introduce invalid XML structure into a user guide, even though the document is valid according to the Serna XML validator. This often happens when dragging and dropping large sections of XML structure, or when commenting sections back into the XML structure. If other authors are using programs other than Serna Free, the way they have commented out XML sections may not be supported by Serna.
XML Copy Editor is a text-based editor, that has no WYSIWYG functionality. You must know your XML rules very well to use this editor.
XML Copy Editor contains a DocBook XML Parser, which will validate your XML. What it can't do is open all the xi:includes and resolve internal <xref> declarations that are not in the same file. This will result in a lot of validation errors, that may mask the real issue.
The advantage that XML Copy Editor offers is the ability to edit the XML structure in a basic text interface. This can be very useful when you are trying to debug your XML documentation. You can use a program such as xmllint to output a full XML file, and then re-validate it using XML Copy Editor. For more information about this technique, refer to Section 4.2.2, “Test Publishing Community Documentation ”
Sometimes XML structure errors can still creep into the document you're working on. It may not be your fault, but you may be required to correct the errors before your user guide can be published.
Often, the easiest way to diagnose a structure error is to assemble all the chapters and sections into one large file, and open this up in an alternative validation tool to the one you're using. By doing this, structure errors that occur between chapters or sections are easily identified.
If you are using a Linux distribution such as Fedora or Red Hat Enterprise Linux, you can use the mkbk bash script to create the all-*.xml file. The mkbk script is capable of publishing this user guide, and selected community documentation guides that haven't been fully Mavenized.
For more information regarding the mkbk script, refer to Section 4.2.2, “Test Publishing Community Documentation ”
In DocBook, the way some content appears when published relies on a consistently applied XML structure. There are certain additions to structure that can be useful to help the reader to quickly grasp information. The following sections are grouped into common areas that you will use regularly in XML authoring.
To keep book structure consistent, the following guidelines must be followed when creating XML structure in your JBoss user guide.
Not every element and attribute that works with Publican is supported. Specifically, not every element has been tested with regards its effect on the presentation of a document once it has been built in HTML or PDF.
Publican works with almost all DocBook 4.5 elements and their attributes, and most of these elements are supported. Supported elements and attributes are those whose presentation in Publican HTML and PDF output has been tested and is of an acceptable quality.
Other elements and attributes that are not known to be harmful or redundant but which have not been tested for quality are unsupported. If material within a particular DocBook element does not look correct when you build a document in HTML or PDF, the problem could be that the transformation logic for that element has not yet been tested. Build the document again and examine Publican's output as the document builds. Publican presents warnings about unsupported elements that it encounters in your XML files.
Finally, a small group of elements and attributes are disallowed. These elements and attributes are set out below, each accompanied by rationale explaining why it is disallowed.
<caution>
,
<tip>
DocBook XML supports five admonitions of varying severity: <tip>, <note>, <important>, <caution>, and <warning>. Taken together, these represent a very fine-grained set of distinctions. It is unlikely that these fine distinctions can be applied consistently within a document, especially when more than one person writes or maintains the document. Moreover, this level of granularity is meaningless to readers. By design, Publican disallows the <tip> and <caution> elements, these elements being the two most redundant in the set.
Use <note> instead of <tip>, and use either <important> or <warning> instead of <caution>. Some criteria by which you might select a suitable level of severity are presented in the Document Conventions section of the preface of books produced with Publican's default brand.
<entrytbl>
Publican depends on an external application, FOP, to render PDF documents. At present, FOP does not support nested tables, so attempts to build PDF files from Publican documents that contain nested tables fail.
Nested tables are therefore disallowed at least until they are supported in FOP. If you planned to include a nested table in your document, reconsider your data structure.
<glossdiv>
,
<glosslist>
This element set presents terms in glossaries in alphabetical order; however, the terms are sorted according to the original language of the XML, regardless of how these terms are translated into any other language. For example, a glossary produced with <glossdiv>s that looks like this in English:
Apple — an apple is
Grapes — grapes are
Orange — an orange is
Peach — a peach is
looks like this in Spanish:
Manzana — la manzana es
Uva — la uva es
Naranja — la naranja es
Melocotonero — el melocotonero es
In a translated language that does not share the same writing system with the original language in which the XML was written, the result is even more nonsensical.
<inlinegraphic>
This element presents information as a graphic rather than as text and does not provide an option to present a text alternative to the graphic. This element therefore hides information from people with visual impairments. In jurisdictions that have legal requirements for electronic content to be accessible to people with visual impairments, documents that use this element will not satisfy those requirements. Section 508 of the Rehabilitation Act of 1973[1] is an example of such a requirement for federal agencies in the United States.
Note that <inlinegraphic> is not valid in DocBook version 5.
<link>
The <link> element provides a general-purpose hyperlink and therefore offers nothing that the <xref> and <ulink> elements do not, for internal and external hyperlinks respectively. The <link> element is disallowed due to its redundancy.
<olink>
The <olink> element provides cross-references between XML documents. For <olink>s to work outside of documents that are all hosted within the same library of XML files, you must provide a URL for the document to which you are linking. In environments that use <olink>s, these URLs can be supplied either as an XML entity or with a server-side script. Publican produces documents intended for wide dissemination in which URLs are always necessary for cross-references. Therefore, the <olink> element offers no advantage over the <ulink> element, and is disallowed due to its redundancy.
<[element] xreflabel="[any_string_here]">
The presence of an <xreflabel> attribute reduces the usability of printed versions of a book. As well, attribute values are not seen by translators and, consequently, cannot be translated.
For example, if you have the following:
<chapter id="ch03" xreflabel="Chapter Three">
<title>The Secret to Eternal Life</title>
<para>The secret to eternal life is</para>
</chapter>
[more deathless prose here]
see <xref linkend="ch03"> for details.
when your XML is built to HTML, the <xref> element becomes an HTML anchor element as follows:
see <a href="#ch03">Chapter Three</a> for details.
The text contained by the anchor element is the same as the data in the <xreflabel> attribute. In this case, it means that readers of printed copies have less information available to them.
You could work around this if you make the value of the <xreflabel> attribute the same as the text within the <title></title> element. However, this duplication increases the risk of typo-level errors and otherwise offers no underlying improvement. And it still reduces the amount of information presented to readers of printed copies.
The following XML:
<chapter id="ch03" xreflabel="The Secret to Eternal Life">
<title>The Secret to Eternal Life</title>
<para>The secret to eternal life is</para>
</chapter>
[more deathless prose here]
see >xref linkend="ch03"> for details.
Will result in an HTML anchor element as follows:
see <a href="#ch03">The Secret to Eternal Life</a> for details.
This is not as informative as the text presented to a reader if you do not use an <xreflabel> attribute. The following:
<chapter id="ch03">
<title>The Secret to Eternal Life</title>
<para>The secret to eternal life is</para>
</chapter>
[more deathless prose here]
see <xref linkend="ch03"> for details.
transforms the <xref> element as follows when built to HTML:
see <a href="#ch03">Chapter 3: The Secret to Eternal Life</a> for details.
More important, however, are the translation problems that <xreflabel> elements cause. Attribute values are not seen by translators. Consequently, they are not translated. Consider the second example above again:
<chapter id="ch03" xreflabel="The Secret to Eternal Life">
<title>The Secret to Eternal Life</title>
<para>The secret to eternal life is</para>
</chapter>
[more deathless prose here]
see <xref linkend="ch03"> for details.
In English, the <xref> is still transformed into an anchor element as follows:
see <a href="#ch03">The Secret to Eternal Life</a> for details.
Someone reading the German version, however, will have this as their underlying HTML:
Sehen Sie <a href="#ch03">The Secret to Eternal Life</a> f�r Details.
If the <xreflabel> attribute is not used, the title and chapter indicator, both properly translated, appear to the reader. That is, the following:
<chapter id="ch03">
<title>The Secret to Eternal Life</title>
<para>The secret to eternal life is</para>
</chapter>
[more deathless prose here]
see <xref linkend="ch03"> for details.
will, after translation, present thus to a German-speaking reader:
Sehen Sie <a href="#ch03">Kapitel 3: Das Geheimnis des ewigen Lebens</a> f�r Details.
This is, not surprisingly, what we want.
The xreflabel attribute is therefore disallowed.
<[element] endterm="[any_string_here]">
The endterm attribute allows you to present hyperlinked text other than the name of the section or chapter to which the hyperlink points. As such, it decreases the usability of printed versions of documents, and causes difficulty for translators.
The text presented in an element (such as an <xref>) that contains the endterm attribute is taken from a <titleabbrev> element in the target chapter or section. Although the content of the <titleabbrev> element is available to translators in the document's PO files, it is removed from the context of the <xref>. The absence of this context makes reliable translation impossible in languages that mark prepositions or articles for grammatical number and grammatical gender.
For example, if you have the following:
<chapter id="The_Secret">
<title>The Secret to Eternal Life</title>
<titleabbrev id="final">the final chapter</titleabbrev>
<para>The secret to eternal life is</para>
</chapter>
[more deathless prose here]
The solution is in <xref linkend="The_Secret" endterm="final"/>.
The text surrounding the <xref> presents in the English version of the document as:
The solution is in
the final chapter.
A translator sees the <titleabbrev> in a PO file as:
#. Tag: titleabbrev #, no-c-format msgid "the final chapter" msgstr ""
and sees the text that contains the <xref> elsewhere in the PO file (or, more likely, in a completely different PO file) as:
#. Tag: para #, no-c-format msgid "The solution is in <xref linkend="The_Secret" endterm="final"/>." msgstr ""
The translator has no way of telling what will be substituted for <xref linkend="The_Secret" endterm="final"/> when the document builds, so a translation in Italian might read:
#. Tag: para #, no-c-format msgid "The solution is in <xref linkend="The_Secret" endterm="final"/>." msgstr "La soluzione è in <xref linkend="The_Secret" endterm="final"/>."
Note the preposition in.
If the translator rendered the final chapter in Italian as l'ultimo capitolo, the result when the document builds will read:
La soluzione è in
l'ultimo capitolo.
This result is comprehensible, but inelegant, because Italian combines some of its prepositions with its definite articles. More elegant Italian would be:
La soluzione è nell'
ultimo capitolo.
Without knowing what text will appear in place of <xref linkend="The_Secret" endterm="final"/>, the translator into Italian cannot know whether to leave the preposition in to stand by itself, or which of seven different possible combinations with the definite article to use: nel, nei, nello, nell', negli, nella, or nelle.
Furthermore, note that the combined preposition and article also poses a problem with regard to whether this word should be placed in the text surrounding the <xref>, or in the <titleabbrev>. Whichever of these two solutions the translator selects will cause problems when the endterm appears in other grammatical contexts, because not all Italian prepositions can combine with the definite article in this way.
Due to the problems that endterm presents for translation, Publican disallows this attribute.
Entities offer convenience but they should be used with extreme caution in documents that will be translated. Writing (for example) &FDS instead of Fedora Directory Server saves the writer time but transformed entities do not appear in the portable object (PO) files that translators use. Complete translations of documents containing entities are, as a consequence, impossible.
Entities present special obstacles to translators and can preclude the production of high-quality translations. The very nature of an entity is that the word or phrase represented by the entity is rendered exactly the same way every time that it occurs in the document, in every language. This inflexibility means that the word or word group represented by the entity might be illegible or incomprehensible in the target language and that the word or word group represented by the entity cannot change when the grammatical rules of the target language require them to change. Furthermore, because entities are not transformed when XML is converted to PO, translators cannot select the correct words that surround the entity, as required by the grammatical rules of the target language.
If you define an entity — <!ENTITY LIFT "Liberty Installation and Formatting Tome"> — you can enter &LIFT in your XML and it will appear as Liberty Installation and Formatting Tome every time the book is built as HTML, PDF or text.
Entities are not transformed when XML is converted to PO, however. Consequently, translators never see Liberty Installation and Formatting Tome. Instead they see &LIFT, which they cannot translate.
Consider something as simple as the following English sentence fragment being translated into a related language: German.
As noted in the Liberty Installation and Formatting Tome, Chapter 3
A translation of this might be as follows:
Wie in dem Wälzer für die Installation und Formatierung von Liberty, Kapitel 3, erwähnt
Because there is no text missing, the title can be translated into elegant German. Also, note the use of dem, the correct form of the definite article ('the') when referring to a Wälzer ('tome') in this grammatical context.
By contrast, if entities are used, the entry in the PO file says:
#. Tag: para #, no-c-format msgid "As noted in the <citetitle>&LIFT</citetitle>, Chapter 3" msgstr ""
The translation of this would probably run thus:
#. Tag: para #, no-c-format msgid "As noted in the <citetitle>&LIFT</citetitle>, Chapter 3" msgstr "Wie in <citetitle>&LIFT</citetitle>, Kapitel 3, erwähnt"
And the presentation would be thus:
Wie in Liberty Installation and Formatting Tome, Kapitel 3, erwähnt
This, of course, leaves the title in English, including words like 'Tome' and 'Formatting' that readers are unlikely to understand. Also, the translator is forced to omit the definite article dem, a more general construction that comes close to a hybrid of English and German that German speakers call Denglisch or Angleutsch. Many German speakers consider this approach incorrect and almost all consider it inelegant.
Equivalent problems emerge with a fragment such as this:
However, a careful reading of the Liberty Installation and Formatting Tome afterword shows that
With no text hidden behind an entity, a German translation of this might be:
Jedoch ergibt ein sorgfältiges Lesen des Nachworts für den Wälzer für die Installation und Formatierung von Liberty, dass
If an entity was used to save the writer time, the translator has to deal with this:
#. Tag: para #, no-c-format msgid "However, a careful reading of the <citetitle>&LIFT</citetitle> afterword shows that" msgstr ""
And the translation would be subtly but importantly different:
#. Tag: para #, no-c-format msgid "However, a careful reading of the <citetitle>&LIFT</citetitle> afterword shows that" msgstr "Jedoch ergibt ein sorgfältiges Lesen des Nachworts für <citetitle>&LIFT</citetitle>, dass"
When presented to a reader, this would appear as follows:
Jedoch ergibt ein sorgfältiges Lesen des Nachworts für Liberty Installation and Formatting Tome, dass
Again, note the missing definite article (den in this grammatical context). This is inelegant but necessary since the translator can otherwise only guess which form of the definite article (den, die or das) to use, which would inevitably lead to error.
Finally, consider that although a particular word never changes its form in English, this is not necessarily true of other languages, even when the word is a proper noun such as the name of a product. In many languages, nouns change (inflect) their form according to their role in a sentence (their grammatical case). An XML entity set to represent an English noun or noun phrase therefore makes correct translation impossible in such languages.
For example, if you write a document that could apply to more than one product, you might be tempted to set an entity such as &PRODUCT. The advantage of this approach is that by simply changing this value in the file, you could easily adjust the book to document (for example) Red Hat Enterprise Linux, Fedora, or CentOS. However, while the proper noun Fedora never varies in English, it has six different forms in Czech, depending on one of seven ways that you can use it in a sentence:
Doc_Name.ent
Table 6.1. 'Fedora' in Czech
| Case | Usage | Form |
|---|---|---|
| Nominative | the subject of a sentence | Fedora |
| Genitive | indicates possession | Fedory |
| Accusative | the direct object of a sentence | Fedoru |
| Dative | the indirect object of a sentence | Fedoře |
| Vocative | the subject of direct address | Fedoro |
| Locative | relates to a location | Fedoře |
| Instrumental | relates to a method | Fedorou |
For example:
Fedora je linuxová distribuce. — Fedora is a Linux distribution.
Inštalácia Fedory — Installation of Fedora
Stáhnout Fedoru — Get Fedora
Přispějte Fedoře — Contribute to Fedora
Ahoj, Fedoro! — Hello Fedora!
Ve Fedoře 10 — In Fedora 10
S Fedorou získáváte nejnovější — With Fedora, you get the latest
A sentence that begins S Fedora získáváte nejnovější remains comprehensible to Czech readers, but the result is not grammatically correct. The same effect can be simulated in English, because although English nouns lost their case endings during the Middle Ages, English pronouns are still inflected. The sentence, 'Me see she' is completely comprehensible to English speakers, but is not what they expect to read, because the form of the pronouns me and she is not correct. Me is the accusative form of the pronoun, but because it is the subject of the sentence, the pronoun should take the nominative form, I. Similarly, she is nominative case, but as the direct object of the sentence the pronoun should take its accusative form, her.
Nouns in most Slavic languages like Russian, Ukrainian, Czech, Polish, Serbian, and Croatian have seven different cases. Nouns in FinnoUgaric languages such as Finnish, Hungarian, and Estonian have between fifteen and seventeen cases. Other languages alter nouns for other reasons. For example, Scandinavian languages inflect nouns to indicate definiteness — whether the noun refers to 'a thing' or 'the thing' — and some dialects of those languages inflect nouns both for definiteness and for grammatical case.
Now multiply such problems by the more than 40 languages that Publican currently supports. Other than the few non-translated strings that Publican specifies by default in the file, entities might prove useful for version numbers of products. Beyond that, the use of entities is tantamount to a conscious effort to inhibit and reduce the quality of translations. Furthermore, readers of your document in a language that inflects nouns (whether for case, definiteness, or other reasons) will not know that the bad grammar is the result of XML entities that you set — they will probably assume that the translator is incompetent.
Doc_Name.ent
Chapters and Sections form the underlying skeleton for each guide. Therefore, structuring these important elements consistently is important.
Over the life of a product, user guides often require content to be reorganized. Having sections directly included in a chapter, can make reordering book structure difficult. For this reason, when adding a <chapter> or <section> to an existing user guide, each <chapter> and <section> must be a separate XML file.
The file must be included in the book using an xi:include reference. See http://www.w3.org/TR/xinclude/#syntax for examples of xi:include syntax.
A complete XML user guide may consist of a large number of XML files. Each file included in the book should be logically, and consistently, named so it is easy to include a file where it is required in the book's structure. For information about recommended file naming standards, refer to Table 4.1, “Book Components” in Section 4.1.1, “XML Book Components”.
To allow cross-referencing within the book, the id attribute must be set for each chapter or section. The format for the chapter or section ID is explicit, to ensure cross-referencing within each user guide is consistent. For more information about links and references, refer to Section 6.14, “Links and References”
The id attribute is applied to the <chapter> or <section> element, and uses the following format:
<chapter id="chap-
Book_Name-Chapter_Title">
<section id="sect-
Book_Name-Chapter_Title-Section_Title">
For example, the XML ID of this section would be <section id="sect-Mobicents_Community_Documentation-Structure_Guidelines-Chapters_and_Sections">.
The two most common list types in DocBook are not named according to such programs as Microsoft Word, or Open Office. You would think that for a bulleted list, you would start the list using <bullets> or <bulletedlist>. Likewise, for a numbered list, you might consider using <numlist> or <numberedlist>.
In DocBook, these types of lists are referred to according to the following nomenclature:
Bulleted List - <itemizedlist>
Numbered List - <orderedlist>
If you are documenting a complex set of steps, you must use a <procedure> to contain the steps. Procedures can contain multiple steps, and offer greater content flexibility. For more information about <procedure>, refer to Section 6.5, “Procedures”
A list must have an introductory sentence, and it must not be a sentence fragment. Sentence fragments are very hard to translate.
An itemized list is used to replace a semi-colon separated list in a sentence.
The XML form of an itemized list has a number of mandatory elements. For a complete list, refer to the DocBook.org <itemizedlist> page.
Example 6.1. <itemizedlist> Mandatory Elements
<itemizedlist>
<listitem>
<para>Item One.</para>
</listitem>
<listitem>
<para>Item Two.</para>
</listitem>
<listitem>
<para>Item Three.</para>
</listitem>
</itemizedlist>
The XML Structure looks like this when published:
Item One.
Item Two.
Item Three.
You can further enhance the <itemizedlist> by adding in a <title> element after the opening <itemizedlist> element. A title might assist the reader with understanding what a large list contains. The XML structure looks like this when published:
<itemizedlist> Title
Item One.
Item Two.
Item Three.
An <orderedlist> is just like an <itemizedlist>, except it displays the content in number order. This type of list is better suited to listing small sub-steps in <procedure> lists.
The XML form of an itemized list has a number of mandatory elements. For a complete list, refer to the DocBook.org <itemizedlist> page.
Example 6.2. <orderedlist> Mandatory Elements
<orderedlist>
<listitem>
<para>Item One.</para>
</listitem>
<listitem>
<para>Item Two.</para>
</listitem>
<listitem>
<para>Item Three.</para>
</listitem>
</orderedlist>
You can further enhance the <orderedlist> by adding in a <title> element after the opening <orderedlist> element. A title might assist the reader with understanding what a large list contains.
The XML structure looks like this when published:
<orderedlist> Title
Item One.
Item Two.
Item Three.
A <variablelist> can be used to define a list of terms, or in situations where a table of only two columns might be used. Variable lists can have optional titles.
Example 6.3. <variablelist> example
<variablelist>
<title>This Title is Optional</title>
<varlistentry>
<term>This is the first term</term>
<listitem>
<para>Here are the item details for the first term.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>This is the second term</term>
<term>this is the third term</term>
<listitem>
<para>Here are the item details for the second and third terms.</para>
</listitem>
</varlistentry>
</variablelist>
This Title is Optional
- This is the first term
Here are the item details for the first term.
- This is the second term, this is the third term
Here are the item details for the second and third terms.
When it is necessary to document a complex set of installation instructions, an <orderedlist> is usually not the best XML element to choose. It has limitations regarding what level of detail each <listitem> element can contain.
The best option for large work-flows, or detailed steps, is the <procedure> element.
You may not be aware, but this element is used extensively throughout this user guide to capture the steps involved in the Authoring Process.
The biggest advantage to using a <procedure> element is that it uses the <step> element. <step> elements can contain a much wider variety of child elements than the <listitem> element used in <itemizedlist> and <orderedlist>.
The XML form of a procedure has a number of mandatory elements. For a complete list, refer to the DocBook.org <procedure> page. Be sure to visit the pages of the child elements that the <procedure> element supports, particularly the <step> element.
The minimum set of elements required for all procedure lists in the Mobicents UDS are described in the following example:
Example 6.4. <procedure> Mandatory Elements
<procedure>
<title><procedure> Title</title>
<step>
<title>Step One Title</title>
<para>Step one info.</para>
</step>
<step>
<title>Step Two Title</title>
<para>Step two info.</step>
</procedure>The XML structure looks like this when published:
You can further enhance the <procedure> by adding in any number of supported child elements into each <step>. Each <step> can contain any number of <para> elements, and also permits <itemizedlist> and <orderedlist> elements. Be sure that the elements inserted are not included in Section 6.1.1, “Disallowed elements”.
Example 6.5. <procedure> Extra Elements
<procedure>
<title><procedure> Title</title>
<step>
<title>Step 1 Title</title>
<para>Step one info. You can have multiple <sgmltag><para></sgmltag> elements, in one step.</para>
<para>Second para to further describe step. </para>
</step>
<step>
<title>Step 2 Title</title>
<para>If you find you need sub-steps, use an <sgmltag><orderedlist></sgmltag> to capture these:</para>
<para>The ordered list should have a lead-in sentence introducing the list:</para>
<orderedlist>
<listitem>
<para>Sub-step one.</para>
</listitem>
<listitem>
<para>Sub-step two, etc.</para>
</listitem>
</orderedlist>
</step>
</procedure>
Procedure 6.2. <procedure> Title
Step 1 Title
Step one info. You can have multiple <para> elements, in one step.
Second para to further describe step.
Step 2 Title
If you find you need sub-steps, use an <orderedlist> to capture these:
The ordered list should have a lead-in sentence introducing the list:
Sub-step one.
Sub-step two, etc.
Depending on the authoring tools you use to edit your XML documentation, inserting tables may take a few mouse clicks. If you prefer to author in plain text mode, you will need sound knowledge of XML table structure so the table you create is valid, and looks the way you want it to when published.
For many new XML authors, tables cause a lot of problems . This section describes the components of an XML table, and includes an XML sample of a three column table. The concept of splitting cells in a row is also discussed.
For the definitive list of table elements and attributes, refer to the Docbook.org <table> page.
In certain situations, a table that would otherwise only have two columns may be better implemented as a variable list, using the <variablelist> element (see Section 6.4, “Lists”).
The majority of tables used throughout JBoss documentation are classed as formal tables. In contrast to informal tables, formal tables always feature a <title> that gives the reader a basic summary of the table contents. A formal table consists of the following structural elements (in order):
<table>
The parent element of all formal tables, which contains all the child elements. <table> accepts attributes that control how the table is processed at publish time. The frame and pgwide attributes are applied to the <table> element.
<tgroup>
Below the <table> element, the <tgroup> element contains the information that governs the basic framework of your table. <tgroup> contains settings that govern the amount of columns in the table, along with the <row> structural information. <tgroup> also contains column and span specifications required to set the table geometry and cell formatting.
<thead>
Defines the column headers for the table. <thead> is also used if you include a table footer, however table footers are not common in JBoss documentation.
<colspec>
Defines the column specifications for the table. Column and row separators, and column widths, are specified as attributes of this element. <colspec> is also used if you include a header (<thead>)
<tbody>
<tbody> is a wrapper element for the <row> elements that comprise the table. Generally, no attributes are applied to the <tbody> element.
<row>
Defines a row in the table, and contains the <entry> elements that comprise each cell in the table.
<entry>
Defines a cell in the table. Each cell can contain block elements or inline elements, but not both concurrently.
For example, one <entry> might contain a paragraph or a list while another <entry> contains parsed character data (#PCDATA), but no single <entry> can contain a mixture of both.
Example 6.6. Three-column Table
<table frame="all" pgwide="1">
<title>Three-column Table</title>
<tgroup colsep="1" cols="3">
<colspec colnum="1" colname="c0"/>
<colspec colnum="2" colname="c1"/>
<colspec colnum="3" colname="c2"/>
<thead>
<row>
<entry>Header Row, Column 1</entry>
<entry>Header Row, Column 2</entry>
<entry>Header Row, Column 3</entry>
</row>
</thead>
<tbody>
<row>
<entry>A</entry>
<entry>B</entry>
<entry>C</entry>
</row>
<row>
<entry>D</entry>
<entry>E</entry>
<entry>F</entry>
</row>
<row>
<entry>G</entry>
<entry>H</entry>
<entry>I</entry>
</row>
<row>
<entry>J</entry>
<entry>K</entry>
<entry>L</entry>
</row>
</tbody>
</tgroup>
</table>
When published, the XML structure described in Example 6.6, “Three-column Table” publishes in the following way.
Table 6.2. Three-column Table
| Header Row, Column 1 | Header Row, Column 2 | Header Row, Column 3 |
|---|---|---|
| A | B | C |
| D | E | F |
| G | H | I |
| J | K | L |
Merging cells horizontally is controlled by specifying the namest and nameend attributes in the <entry> element. The colname value of the starting column and the finishing column are specified in the <entry> element that you want the cell span to start from.
Example 6.7. Cell spanning
This example describes how to merge the B and C cells together in Table 6.2, “Three-column Table” using the namest and nameend attributes.
In the <thead> element of the table, the <colspec> element has two attributes specified: colnum and colname. By default, the colname attribute starts from c0.
To span the B and C cells, you need to specify namest="c1" as the starting cell (the second column) and nameend="c2" as the finishing cell (the third column).
<row>
<entry>A</entry>
<entry
namest =
"c1"
nameend =
"c2" >BC</entry>
</row>
<row>
<entry>D</entry>
<entry>E</entry>
<entry>F</entry>
</row>
In DocBook v4.5, the <emphasis> element supports attributes that allow you to override default stylesheet behaviour. Do not use attributes such as bold, italic, or underline to alter text enclosed in <emphasis> elements.
Remember that XML authoring separates content from style. By applying attributes in this way, you are effectively introducing style into your content.
If you want to change the way the <emphasis> element formats the text at publish time, you should consider updating the stylesheet, and not "work around" the problem by applying attributes.
There are a number of graphical elements that are supported in DocBook. For consistency, the best element to use is <figure>.
The <figure> element has the advantage of containing a well-formatted title for the image. It is suitable for both diagrams, and screenshots, which are included through the use of the <mediaobject> element. The <mediaobject> element must also contain a <textobject> element with a description of the image for accessibility purposes.
Think carefully before inserting a screen shot. Often, you can explain what fields a user must complete in the user interface without a screen shot. If you can, you will save a lot of maintenance in the future.
Screenshots increase the maintenance of a user guide. What happens if the interface changes? What happens if the product logo is updated? These situations require the screen shot to be recaptured again.
Example 6.8. <figure> element structure
<figure>
<title>JBoss Community Logo</title>
<mediaobject>
<imageobject>
<imagedata fileref="images/img-JBoss_Community_Logo.png" format="PNG"/>
</imageobject>
<textobject>
<para>Logo for the JBoss Community<para>
</textobject>
</mediaobject>
</figure>The XML structure looks like this when published:
The <imagedata> element defines the image path, and sets the way the image is displayed in the published output. Use the following recommendations when inserting <figure> elements:
To scale large diagrams or screenshots to fit within page boundaries, set width="450" to scale the screen shot within the boundaries of an A4 page.
If you need to include a screen shot of a large user interface, consider including only the area that relates to what you are discussing. You can get a much better result if you capture a small section of a user interface, because the user can easily see the detail of the area referred to in the procedure or concept.
If you are using a Linux-based operating system, chances are you will be using a graphics package such as the GNU Image Manipulation Program (GIMP). You can use the GIMP to capture screenshots, and save them in a format that will provide the best output for both HTML and PDF.
Procedure 6.3. Correctly capturing screenshots using the GIMP
The following procedure describes how to correctly capture and save a screen shot using the Create Screenshot function in The GIMP. The procedure assumes that you have The GIMP installed, and the program is open.
Prepare the Content to Capture
Ensure you have the correct application open, and that the part of the application you need to capture is activated. The GIMP will capture the screen immediately, unless a delay is set.
Select the Create Screenshot Option
Click → .
Confirm Capture Options
In the Screenshot dialog box, select the capture option you require according to the following guidelines:
Do not include window decorations in any of your screenshots.
Consider capturing only the section of the screen you need to refer to in the documentation. It will be clearer for the reader.
Capture the Screen
Click the button to begin capturing the screen area. Select the program, or area of the screen you want to capture.
Scale the Image
Click → .
If you need to scale a large screen shot or diagram, use the following settings:
In the Image Size group, set the Width to (no greater than) 450 pixels.
In the Quality group, set to .
Click to set the image scale.
Save the Image
Click → .
Name the image according to the image file naming conventions. If in doubt, look at the naming convention in the Images folder of your user guide directory.
In the Save Image dialog, select PNG image (*.png) from the Image Type drop down menu.
Click .
To alert readers to information that might otherwise be overlooked, DocBook v4.5 supports a number of admonitions you can use to highlight concepts for readers. The supported options are limited to:
Warning
Important
Note
The options are listed in order of priority, and alert the reader to the following conditions:
Warnings contain information that must not be ignored. Ignoring recommendations in Warnings may result in data loss, or other catastrophic issues.
Includes information that might be easily overlooked and may cause unnecessary frustration when using the software. For example, configuration changes that only apply to the current session, or services that need restarting before an update will apply.
Contains information that may be useful to the reader. Ignoring a note should have no negative consequences for the reader, but may result in the reader missing out on usability tips, or a shortcut that may help them complete a task.
The way these elements are formatted depends on what publishing system you use to produce a user guide. The Publican JBoss brand formats this information in a conspicuous way; lots of color, bold graphics, and a slightly different typeface to the normal content. The Publican jboss-community brand and the defalut jDocBook style formats the information slightly less aggressively by using softer colors, but each admonition is still quite conspicuous to the reader.
When writing information for any of these elements, you can maximize the effectiveness of the information by keeping the structure of the information consistent. Consider the following examples to see how effective this is.
Example 6.9. Warning and Important
Use the following XML structure when creating a Warning or Important admonition. See the sample Warning and Important in this example as a reference.
<warning>
<title>Warning Summary</title>
<para>Imperetive instruction to the user. Reason why the user should obey the instruction.</para>
</warning>
<important>
<title>Important Summary</title>
<para>Information that will save the reader unnecessary frustration.</para>
</important>
Do not uninstall Open Office from Gnome Desktop systems. Open Office package dependencies may result in critical system files, including X Windows System files, being unintentionally removed.
Only MSS for JBoss v0.7 bundles the Diameter JBoss Service (the Diameter SAR, or Servlet Archive), which is required to run the Diameter Event-Charging Service.
When writing XML documentation, certain symbols can prevent XML validating correctly. When parsing an XML document, the validator interprets symbols as XML processing instructions. As a rule, a good WYSIWYG XML Editor (for example, Syntext Serna) will correctly substitute special characters with their literal value entities automatically.
If you are editing XML using a basic text editing program, this automation may not exist. You must manually insert symbol entities when you need to insert a keyboard symbol (commonly) or non-keyboard symbols (copyright, etc).
The most common symbol entities that will break XML publishing are listed for reference.
Inserts a left angle bracket "<" symbol. The left angle bracket is used to open all XML elements, therefore the parser will assume that the text directly proceeding the symbol is a DocBook XML element. This will cause the publish to fail. Use this symbol entity when writing menu paths, referring to XML elements within <para> or other character data (CDATA) elements, or within code samples.
Inserts a right angle bracket ">" symbol. Use this symbol to close off XML elements when describing XML elements in CDATA elements such as <para> elements and within code samples.
Inserts an ampersand "&" symbol. Ampersand is used to start an entity reference, so this will break the XML publish if you directly insert it into your document.
In DocBook 4.5, there are a number of elements that can be used to mark-up items that the user has access to in a program Graphical User Interface (GUI). A user appreciates consistency in the way user commands are represented because it allows them to quickly identify the sequence of menu transitions required to execute a product feature.
Use the following elements as appropriate when describing a GUI:
<guibutton>
<guiicon>
<guilabel>
<menuchoice>
<guimenu>
<guimenuitem>
<guisubmenu>
<guimenu>, <guisubmenu>, and <guimenuitem> elements can be listed inside a <menuchoice> to provide a simplified notation for traversing the menu hierarchy, as demonstrated in Example 6.10, “GUI elements example”. Alternatively each can be used individually to describe menus and menu items.
Example 6.10. GUI elements example
Choose <menuchoice><guimenu>System</guimenu><guisubmenu>Preferences</guisubmenu><guimenuitem>Mouse</guimenuitem> </menuchoice> from the main menu bar to launch <application>Mouse Preferences</application>. In the <guilabel>Buttons</guilabel> tab, click the <guilabel>Left-handed mouse</guilabel> check box and click <guibutton>Close</guibutton> to switch the primary mouse button from the left to the right (making the mouse suitable for use in the left hand).
Choose → → from the main menu bar to launch Mouse Preferences. In the Buttons tab, click the Left-handed mouse check box and click to switch the primary mouse button from the left to the right (making the mouse suitable for use in the left hand).
This section lists helpful elements for use when describing and documenting the use of applications and utilities. Also refer to Section 6.11, “Menus, Buttons, and Labels” for details on documenting an application or utility with a Graphical User Interface (GUI).
Use for files and directories. For packages and modules, use <package>.
Use the <package> element for packages and modules, such as those which need to be installed for a particular application.
Example 6.11. <package> example
To install <application>Publican</application>, download the <package>publican</package> package.
To install Publican, download the publican package.
The <package> element was introduced in DocBook version 4.4, so documents using older versions will need to update their DOCTYPE declaration to use it. A minimum version of DocBook version 4.5 is recommended. The DOCTYPE declaration can be updated with the following code at the top of the document:
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
...
]>
Use the <parameter> element when referring to the name of a parameter for a command. Use <literal> for the actual value of a parameter.
Example 6.12. <parameter> example
Use the <parameter>--help</parameter> parameter for assistance.
Use the
--helpparameter for assistance.
The <parameter> element can also be used for parameters in a method in a programming language. If both uses appear in the same document it may be necessary to differentiate them using the class attribute, which can be set to command, function, or option.
Use the <application> element for software applications, for example, Mozilla Firefox.
Use the <systemitem> element for protocols in general, such as SSH, TCP, telnet, CGI, and protocols in general.
Use the <replaceable> element for marking descriptive text in a command or computer output which the user is expected to replace with text specific to their particular application. It describes what the user is expected to use, but not the actual text they should use.
Example 6.13. <replaceable> example
Edit <filename><replaceable>filename</replaceable>.xml</filename>
Edit
filename.xml
Use the <command> element for entered commands, such as ls, top, find, mount, and bash. When referring to applications launched this way, also use <command>, for example, firefox. When describing lengthy commands it may be suitable to mark up additional parameters within the <command> element with the <parameter> element.
Use the <computeroutput> element in-line with text to represent text that is shown on a computer screen, such as output from a command. For displaying output text in a block, use the <screen> element.
Example 6.14. <computeroutput> example
The application status will display <computeroutput>cleaning files</computeroutput>.
The application status will display
cleaning files.
Use the <screen> element to represent text that is shown on a screen, usually an output from a command. The text is shown in a block. For referring to display text in-line, use the <computeroutput> element.
Example 6.15. <screen> example
<screen>
books Desktop documentation drafts mss photos stuff svn
books_tests Desktop1 downloads images notes scripts svgs
</screen>
books Desktop documentation drafts mss photos stuff svn books_tests Desktop1 downloads images notes scripts svgs
Use the <systemitem> element for user account names.
Code samples feature prominently throughout JBoss documentation. The correct XML element to use for XML and Java code block examples is the <programlisting> element.
<programlisting> has been used extensively throughout this user guide to highlight the XML structure you need to use in specific situations. There are two ways you will need to use this element within your user documentation.
An advantage of using <programlisting> is that you can specify the way Maven and Publican displays the information to the user. This is achieved using the language and role attribute. When language is defined, Publican will format the code example with highlighting that will assist the reader in understanding the code structure. The role attribute does the same when using Maven.
For XML samples, you must specify "XML" (in uppercase) as the language and role values.
The code for an XML program listing will look similar to the following example.
<programlisting language="XML" role="XML">
<important>
<title>Important Summary</title>
<para>Information that will save the reader unnecessary
frustration.</para>
</important>
</programlisting>
When output, the XML elements are highlighted to assist the reader.
<important>
<title>Important Summary</title>
<para>Information that will save the reader unnecessary
frustration.</para>
</important>
If XML is not specified, the output looks far less attractive.
<important>
<title>Important Summary</title>
<para>Information that will save the reader unnecessary
frustration.</para>
</important>For Java code samples, the same rules apply. Instead of "XML", "JAVA" is specified as the role attribute value and "Java" for the language attribute.
package org.jboss.book.jca.ex1;
import javax.naming.InitialContext;
public class ExClient
{
public static void main(String args[])
throws Exception
{
InitialContext iniCtx = new InitialContext();
Object ref = iniCtx.lookup("EchoBean");
EchoHome home = (EchoHome) ref;
Echo echo = home.create();
System.out.println("Created Echo");
System.out.println("Echo.echo('Hello') = " + echo.echo("Hello"));
}
}
For lengthy code samples of more then a couple of lines, it is preferable to use an <xi:include> to an external file which contains only the code sample. These code sample files should end in the relevant extension and should be placed in an extras/ directory located in the source language directory.
Java files use the java extension.
XML files use the xml_sample extension. When referencing an external XML file with the xml extension, Publican formats the file as though it were DocBook text. Using xml_sample avoids this.
Example 6.16. <programlisting> example
<example id="exam-JBoss_Documentation_Guide-Code_Examples-programlisting_example">
<title><programlisting> example</title>
<programlisting language="XML" role="XML">
<xi:include parse="text" href="extras/exam-JBoss_Documentation_Guide-Code_Examples-programlisting_example.xml_sample" xmlns:xi="http://www.w3.org/2001/XInclude" />
</programlisting>
<para>
<xref linkend="exam-JBoss_Documentation_Guide-Code_Examples-programlisting_example"/> describes itself.
</para>
</example>
Example 6.16, “<programlisting> example” describes itself.
Where <programlisting> presents the code in a separate block, there are multiple elements to use when using code samples in-line with other text.
Use the <literal> element for values of attributes, properties and parameters. In the Directory Server documentation, for example, the nsslapd-accesslog-level attribute can have values of 0, 4, 256, and beyond. The <literal> elements should be used for these values.
Alternatively, the <option> element can be used for those attributes, properties and parameters with a limited set of possible values, for example, a boolean value of true or false, or an enumerated type.
Use the <parameter> element when referring to the name of the parameter, attribute, or property itself. When writing the parameter and its value together, or the parameter and its method or class together, use the <code> element.
Use the <classname> element in-line with text to mark classes or similar objects in programming languages. Typically it refers to a class in an object-oriented language, such as Java.
Example 6.17. <classname> example
Use the <classname>java.lang.Object</classname> class in an example.
Use the
java.lang.Objectclass in an example.
When writing the class together with a method or parameter, use the <code> element.
Use the <code> element in-line with text to mark computer programming code.
The <code> element was introduced in DocBook version 4.3. For <code> to be supported, documents must reference the correct DocBook version in the DOCTYPE declaration. A minimum version of DocBook version 4.5 is recommended. The DOCTYPE declaration can be updated with the following code at the top of the document:
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
...
]>
The <code> element does not offer syntax highlighting. To provide sample code in a block, use the <programlisting> element instead.
For simplicity, do not mark individual elements within a <code> element. If you feel identifying elements of the code is necessary for readability, the following elements are available:
<classname>
<literal>
<methodname>
<option>
<parameter>
<sgmltag>
<type>
<varname>
Any other code-related elements not covered in this section.
Example 6.18. <code> example
Use <code>a.equals(b)</code> to determine if object <parameter>a</parameter> is equal to object <parameter>b</parameter>.
Use
a.equals(b)to determine if objectais equal to objectb.
Use <code><programlisting language="XML" role="XML"></code> to mark <acronym>XML</acronym> code.
Use
<programlisting language="XML" role="XML">to mark XML code.
Use the <type> element for data types, such as int, char, or boolean. Although the markup is not styled by Publican, it clarifies the term's use for translation. For actual values for data types, use the <literal> element.
Example 6.19. <type> example
Used for data types, such as <type>int</type>, <type>char</type>, or <type>boolean</type>.
Used for data types, such as int, char, or boolean.
Use the <parameter> element when referring to the name of a parameter for a method or constructor in a programming language. Use <literal> for the actual value of a parameter.
When writing the parameter and its value together, or the parameter and its method or class together, use the <code> element.
The <parameter> element can also be used for parameters in a command. If both uses appear in the same document it may be necessary to differentiate them using the class attribute, which can be set to command, function, or option.
Use the <methodname> element in-line with text to mark the name of a method in a programming language.
If including the class to clarify the method name, include the whole class in the <methodname> element rather than marking the class part with <classname>.
Example 6.20. <methodname> example
Use the <methodname>java.lang.Object.toString()</methodname> method to get a <type>string</type> representation.
Use the
java.lang.Object.toString()method to get a string representation.
When writing the method together with its class or parameters, use the <code> element.
Use the <varname> element when referring to the name of a variable in an object-oriented language such as Java, or the name of an attribute of an XML element. Use <literal> (or <option> if appropriate) for the actual value of a variable or attribute.
Example 6.21. <varname> example
Use the <varname>class</varname> attribute, which can be set to <option>command</option>, <option>function<option>, or <option>option</option>.
Use the class attribute, which can be set to
command,function, oroption.
Use the <sgmltag> element in-line with text to mark XML elements.
When writing the element together with attributes, use the <code> element.
Example 6.22. <sgmltag> examples
Use the <sgmltag><example></sgmltag> element for examples.
Use the
<example>element for examples.
Use the <code>id="[section_name]"</code> attribute of the <sgmltag><section></sgmltag> element to set the ID for the section.
Use the
id="[section_name]"attribute of the<section>element to set the ID for the section.
Use the <xref> element to cross-reference a chapter, section, or other content block. The linkend attribute points to the target block's id attribute.
Example 6.23. <xref> example
For more details refer to <xref linkend="exam-JBoss_Documentation_Guide-Code_Examples-xref_example" />.
For more details refer to Example 6.23, “<xref> example”.
Use the <ulink> element to link to an external URL. The url attribute points to the target link, and must be a complete URL.
Example 6.24. <ulink> example
For further information, refer to <ulink url="http://www.jboss.org" />.
For further information, refer to http://www.jboss.org.
By creating the link without providing a link alias, the reader can see the full URL. This is especially important to consider if you are producing both print-ready and online documentation.
When you need to include a <ulink> that resolves to a lengthy URL, you may wish to supply a link alias so the link is formatted cleanly. The reader can see the full URL, however the information wraps to the next line which can be distracting to the reader. If you
Example 6.25. <ulink> link alias examples
Long URL without an alias:
For further information, refer to <ulink url="http://docs.fedoraproject.org/installation-quick-start-guide/f12/en-US/pdf/Fedora_12_Installation_Quick_Start_Guide.pdf"/>.
For further information, refer to http://docs.fedoraproject.org/installation-quick-start-guide/f12/en-US/pdf/Fedora_12_Installation_Quick_Start_Guide.pdf.
PDF documentation handles link aliases by creating a footnote at the bottom of each page. This formatting can distract readers because they have to follow the footnote number and locate the link at the bottom of the page.
Long URL with an alias:
For further information about installing Fedora 12, refer to the <ulink url="http://docs.fedoraproject.org/installation-quick-start-guide/f12/en-US/pdf/Fedora_12_Installation_Quick_Start_Guide.pdf">Installation Quick Start Guide</ulink>.
By constructing the sentence differently, you can include the link for those readers that access the online version of the documentation. Readers who prefer PDF documentation are also supported, because they know what to search for when they are next online.
Use the <citetitle> element when referring to another book, article, website, or other form of external content.
Unlike the <xref> element, <citetitle> does not link to the referenced section, so if the name of the referenced book is changed the <citetitle> element will need to be updated manually. External links such as those using the <ulink> element should not be used to reference another book, as an external link may become outdated at a later time.
Example 6.26. <citetitle> example
Refer to <citetitle>DocBook: The Definitive Guide</citetitle> for further details.
Refer to DocBook: The Definitive Guide for further details.
To ensure that multiple authors can work on different sections of a single guide, procedures governing the way authors contribute content to the guide must be clearly communicated and understood by all contributors.
The following sections detail the procedures that must be followed by all community content authors. Failure to follow these procedures consistently will likely result in wasted writing effort and failed GCode SVN commits.
The process of writing Mobicents documentation changes can be described in the following main phases:
GCode Documentation Ticket
Authoring
Review
Editing
Fixed
All documentation changes must originate from a documentation ticket. Documentation tickets allows changes associated with a product enhancement to be tracked easily from the origins of the enhancement to the completed changes.
When a documentation ticket is closed in the final phase, the ticket remains in the GCode Ticket system for posterity.
Procedure 7.1. Creating a Documentation Ticket
The following procedure details how to create a documentation ticket as a result of a product enhancement.
Search Before Opening a New Issue
On the Issues page, enter a search query that reflects the issue you have discovered.
Search Open Issues for [search query]. Click to retrieve the results.
If a suitable match is found, check with the person assigned to the ticket to see if the defect can be appended to the existing ticket.
If the existing ticket has been closed, raise a new ticket to capture the information.
Be thorough in your searches; it will save duplicating tickets and unnecessary admin time spent on ticket management.
Open a New Issue
If you can not find a duplicate ticket, navigate to the Mobicents GCode tab, and click the link.
Select the Docs Enhancement Template
From the Issue Template field, select the template type.
Complete the Summary field
Prefix the summary with one of the following codes to clearly identify the affected user guide:
[DIA Guide] - Diameter User Guide
[JSS Guide] - JAIN SLEE Server User Guide
[MSS Guide] - SIP Servlets Server User Guide
[MMS Guide] - Media Server User Guide
[SPS Guide] - SIP Presence Service User Guide
[PLAT Guide] - Platform Installation Guide
Include a descriptive (but short) summary of the enhancement in the Summary field.
Complete the Description Field
The description field must contain specific details about the defect. The more detailed the information, the easier it will be for the assignee to complete the ticket with minimal assistance. Follow the headings in the Docs Enhancement template and provide the necessary information.
Include website links to content for the enhancement.
Include the developer ticket to which the enhancement relates. If the ticket isn't related to a code change, include a link to the forum discussion history surrounding the enhancement.
Include a Chapter/Section reference (including the name) to the affected area in the user guide.
Change the Initial Ticket Status
If you are raising a ticket for another user guide, or you are not a developer, change the status to New.
If you are raising a ticket for a development change you made, change the status to Accepted.
Complete the Cc field.
Add the email address of the current Red Hat Technical Writer (RHTW) assigned to the project. The RHTW will be required to edit your work in a later phase.
If you know the email address of the people responsible for maintaining each guide, include them in the Cc field.
Append Labels
Labels are critical in a ticket, because they enable the ticket to be searched using consistent tags.
You will notice that two labels are automatically added; Type-Enhancement, Priority-Medium and Component-Docs. These categories are acceptable by default.
Append the following extra categories at a minimum to the Labels field:
Component-[server_name] - specifies the server to which the ticket relates.
Version-[version_number] - specifies the base version number affected by this ticket.
Save the Ticket
Click .
The ticket is now saved in the system, and the people in the Owner and Cc fields have been sent a link to the ticket for comment.
Procedure 7.2. Developer Ticket Approval
Part of effective ticket management requires the developers responsible for each server to review new tickets to approve the enhancement and add supplementary information to the ticket.
Review Raised Tickets
Developers must regularly check the GCode ticket queue for new issues. To do this, search for the server prefix (for example [MSS Guide] for the SIP Servlets Server User Guide) in the Summary field.
For tickets that been incorrectly created, the previous search will not return the correct results. Search for the Component-[server name] Label, and ensure the server prefix is added to the ticket.
Review Ticket Fields
Ensure that the ticket contains the information specified in Creating a Documentation Ticket .
Verify or Add Version Information
Check that the affected product version number (if specified) is correct for the proposed documentation enhancement.
Append the correct product version number, or change the version number and add a comment explaining why the version was incorrect.
If the ticket was raised by a non-developer, ensure the ticket is changed from New to Accepted status.
Authoring can begin after the GCode ticket has been accepted by the developer/s responsible for the affected server. The Mobicents User Documentation Suite (UDS) is written in XML, and stored in the GCode SVN.
The audience of this guide is primarily Mobicents developers who should already be familiar with SVN usage. The specifics of SVN operation are therefore not described in detail.
The GCode SVN Documentation Repository must be checked out as a working copy prior to making any changes.
Procedure 7.3. Check Out Server Repository
Trunk or Branch
Determine what version of the server the enhancement relates to. The /trunk directory contains the latest version of the server currently in development.
Most documentation changes will occur in /trunk, however there may be instances where an enhancement must be appended to previous server releases.
The GCode Documentation Ticket will indicate which release the changes belongs to from the information added to the Labels section of the ticket.
For GCode Repository Structure, refer to Chapter 2, Documentation Repository
Check Out a Working Copy
Check out a working copy of the affected server release to your local hard drive.
If you have a working copy of the directory checked-out in another working folder (for example, a server code repository working copy), execute SVN Update on the documentation folder in this directory before changing any XML content.
The working copy will usually be the /trunk version. If the ticket requires the change to be made in /trunk as well as a /branch, then make the changes in /trunk first and back-port into each affected /branch.
Open the Working Directory
Navigate to the en-US directory, and open the directory to display the files.
Once a working copy is checked out of the GCode SVN repository, making the changes specified in the GCode Documentation Ticket can begin. Updating the XML details the steps to updating an existing section in a book. The process is the same for any documentation updates.
Procedure 7.4. Updating the XML
Updated the GCode Ticket
Change the Status field of the GCode Documentation Ticket to Started. This informs other content authors that the ticket is no longer available in the ticket queue.
Open the Chapter or Section XML File
Navigate to the en-US directory in the User Guide repository.
Select the XML file to edit, and open it in your preferred XML Authoring Tool.
Locate the Area to Update
The easiest way to locate the area in an XML file is to search for keywords. Use the information in the GCode Ticket to search for the affected area that requires updating.
Check the XML Comment for the Authoring Status
To allow other content authors to see what sections of the guide can be edited, XML comments are used.
Before making a change, you must ensure that the affected area is not being worked on (or 'claimed') by another author.
Each content author is responsible for updating and maintaining the XML Comment Block at each stage of the authoring process.
XML comments must be placed at the parent XML level. For example, if a change is required to content contained in a <para> tag within a <section>, the XML comment must be inserted at the <section> level. The XML comment uses the following structure:
<!--GCODE TICKET: [Ticket Number] AUTHOR: [Author Name] DATE CHANGED: yyyymmdd STATUS: Authoring|Review|Editing|Fixed SUMMARY: [Brief summary of change] -->
Claim the Section for Editing
If the section is not marked as being changed by another content author, you can proceed to 'claim' the section for editing.
Change the XML comment to reflect the following information:
<!--GCODE TICKET: [Ticket Number] AUTHOR: [Author Name] DATE CHANGED: yyyymmdd STATUS: Authoring|Review|Editing|Fixed SUMMARY: [Brief summary of change]-->
Your name must be consistent so you can search for other instances within the XML. Consider using your Red Hat email username for the AUTHOR. For example, jmorgan (for Jared Morgan).
Change the Status to Authoring.
Make Changes
Incorporate the information from the GCode Documentation Ticket. When making changes, follow these recommendations.
Authoring Recommendations
It is easy to make XML structure errors if you are not using an XML Editing program that controls structure for you. Regularly validating your content will identify structure issues early. You will have a better idea about what section might contain the error, based on what section you have recently edited.
If your XML does not validate, refer to Chapter 4, Publican and Maven for troubleshooting information. If you are not using Publican or a Linux distribution, then you must find another way to validate your content.
Make smaller, consecutive changes to existing XML chapters, rather than large structural changes. Commit your validated changes regularly.
GCode SVN can merge small changes from multiple authors effectively. However, larger changes may result in SVN mismatches. You must manually resolve the SVN mismatch conflict. This is often very time consuming, and annoying.
If you are using an XML Authoring Tool to author changes, always enable "Strict Validation". Strict Validation will prevent the introduction of invalid mark-up to your work.
Spell Check Changes
All changes must be spell checked. The English (US) language is used throughout the Mobicents UDS. Ensure your XML Authoring Tool has the English (US) dictionary set as the default spell checker language.
Publish and Review
Publish your changes to HTML-Single using Publican and Maven JDocBook.
Review your changes to check if the display and presentation meets the existing standards of the Mobicents UDS.
If you are not using the Publican Tool chain in your daily XML editing tasks, you can still test publish using your XML Authoring tool's Publish feature to get an idea of what the publish might look like.
The operation will vary between editors, but the main thing is that the book will not publish if it is not structurally valid.
Commit Changes to GCode SVN
Commit structurally valid XML back into the GCode SVN regularly throughout the day.
For each commit, make a note of the SVN commit number so it can be added to the GCode Ticket when you update the ticket with your progress.
For documentation, the risk of SVN merge failure increases the longer you wait between commits. It is much easier to commit regularly than to manually merge your changes into someone else's changes.
After the changes have been made to the affected XML file, the GCode Ticket must be updated with a summary of the changes.
While this may seem like an administration overhead, it is vitally important that a history of changes is kept with the ticket.
Often, questions are raised about why a feature was removed from user documentation. Having a thorough history in the ticket will help to justify the reason why the feature was removed, and help other content authors and project managers to understand the issue in greater detail.
Update the GCode Documentation Ticket with the following information:
The GCode SVN commit numbers involved with the changes.
A description of what has changed in the XML.
Chapter-section references to the new content in the HTML Publish. For example:
Section 3.2. Procedure 3.2.1 - Steps 1 to 6 added to clarify process.
The Review phase involves another team member peer reviewing the changes made by the original content author. This important phase provides the opportunity to review the changes for technical accuracy.
Additionally, it provides a chance for your peers to comment on how user-friendly the information is. After all, if the content is not user friendly, then a user probably won't use it.
The Review phase involves the content author and the reviewer in that the content author must discuss and incorporate any feedback provided by the reviewer.
Before sending off the changes for review, there are a few administration tasks that must be completed.
Procedure 7.5. Update XML Comments to Review
Open Affected XML Files
From the information contained in the GCode Ticket, open each affected XML file.
Edit XML Comments
In each affected section, update the XML Comment STATUS to Review.
The information in the GCode Ticket should help you to determine which sections are changed.
Save and Close
Save and close all open XML files.
Create Review Document requires the XML changes to be published to HTML-Single format using the mkbk script, the Publican Tool chain, and Maven JDocBook. For this procedure, you must have Publican and Maven JDocBook configured according to the information in Chapter 4, Publican and Maven.
Create Review Document assumes that you are using Fedora or Red Hat Enterprise Linux, which are the currently supported Linux distributions for Publican.
Procedure 7.6. Create Review Document
Navigate to the User Guide Directory
Open a terminal, and navigate to the directory that contains the en-US documentation directory.
Create Combined XML File
Run the mkbk script and create the all-[server name].xml file.
For command-line usage, refer to Chapter 4, Publican and Maven.
Commit all-[server name].xml to GCode SVN
Commit the file to GCode SVN, so the Hudson Build Server builds the doc from the correct file version.
Request Hudson to Build a HTML-Single
Generate the review document by instructing the Hudson Build Server to create a HTML-Single book.
Record the Build ID Number
After Hudson has successfully published the XML book to HTML-Single format, copy the direct link to the file and paste it into the ticket.
Save and Close the GCode Ticket
Click once the link to the review document has been appended to the ticket.
After completing the review preparation tasks, you are ready to send your changes to a project member for review.
The GCode Documentation Ticket contains the review request, and provides the reviewer with the information they need to complete the review.
Requesting Review using GCode Ticket describes the process to request a documentation review.
Procedure 7.7. Requesting Review using GCode Ticket
Open Original GCode Ticket
If the ticket is not already open, navigate and open the GCode Documentation Ticket that relates to the documentation review.
Click in the Comment box to display the full details of the ticket, including the Labels.
Add the Request to the Ticket
In the Comment field, request that the ticket is ready for review.
Ensure the reviewer name, or email address, is specified in the Cc: field of the ticket.
Provide Direct Links to All Published Changes
Hudson allows you to copy and paste direct links to published sections of the online User Guide. Pasting direct links to the section will greatly assist the peer reviewer with locating your changes.
Including Direct Links
Navigate to the section you changed as part of the enhancement.
Copy the absolute link to the section from the URL field of the Web browser.
You will know it is an absolute link because it will have a #[chapter/section name] as the last part of the URL.
Paste the direct link into the ticket.
Repeat the procedure for all other changes.
Be as specific as possible with the areas requiring review. The more information you provide your reviewer, the easier it will be to efficiently complete the review.
Save and Close
After ensuring all required information is present, save and close the ticket.
After the review request has been sent, the peer reviewer is notified that a review is waiting through an email notification from GCode. Thorough ticket review is key contributor to fantastic user documentation because other team members can use the opportunity to read the changes from a customer perspective. The content can be evaluated for technical accuracy and readability before being sent to the editing phase.
The goal of Peer Review is to discuss why your suggestions should be considered by the content author. The better your reasons for suggesting an improvement, the better the chances of having the content incorporated, or reaching a compromise.
Peer Reviewing Documentation Changes describes the process to follow when a review request is received from the GCode Ticket System.
Procedure 7.8. Peer Reviewing Documentation Changes
Open the Ticket
In the email notification, click the link in the ticket to take you to the GCode Documentation Ticket.
Open the HTML Document
The ticket should contain a direct link to the affected build version and section of the user guide hosted on the Hudson Build Server.
Click each link to be taken to the closest section containing each enhancement.
Refer to the details in the ticket to verify what you should be reviewing.
Review the Enhancements
For each specified enhancement, ask the following questions:
Peer Review Questions
Look at readability of the documented enhancement. Does it make sense when you read it? If not, what needs to be changed?
Is the incorporated information included in the correct position in the User Guide? If not, where should the info be moved to?
Do the incorporated changes cover the details identified in the Enhancement? If not, what's missing and where should it be incorporated?
Is all relevant information incorporated for the particular enhancement? If not, what's missing and where should it be incorporated?
Diagrams should be present only if the information contained within them is essential for the reader to grasp a concept, or understand a user interface. Well written procedures generally don't require supporting screen shots if the procedure describes the fields a user must complete. Excluding unnecessary screenshots increases the maintainability of the UDS.
Comment on the Enhancements
When you encounter an area that requires improvement, you must document your suggestions in the XML file so the content author can review your suggestions in context.
XML comments are used to document Peer Review comments.
<!--Issue #[GCode Issue Number] PR Comment - [describe what needs to be changed or clarified by the content author.]
In the comment, be as detailed as possible so the content author can effectively evaluate your suggestions.
Feedback can sometimes be perceived as criticism. For this reason, it is important to provide only constructive feedback to the contributing content author.
Update the Review Block Information for the Section
Update the XML Status Block for the Chapter or Section you are reviewing.
Change STATUS to Review, and update the DATE CHANGED to the date of your review.
Commit Comments to GCode SVN
Once you have finished providing feedback, commit your changes to GCode SVN.
Include a meaningful commit message to indicate what was done. For example:
Issue #666 - PR - Committed comments made as part of Peer Review for this ticket.
Make note of the commit number.
Update the GCode Ticket
Once the XML files are committed, you must update the GCode ticket with the following information:
GCode SVN commit number.
Brief summary of suggestions for the content author.
The Peer Review comment syntax you used to mark any changes.
For example, "I've used "Issue #666 - PR" to mark my review comments"
Indicate whether a re-review is required after the recommended changes have been incorporated, or if the changes can go straight to the Mobicents Editor for review.
Generally, a re-review is required when large changes are suggested by the reviewer. It is important to verify that the content author has understood what you meant in your review comments, and has appropriately incorporated your suggestions.
For smaller changes, you can recommend that the content author make the suggested changes, and forward the enhancement onto Editing.
The responsibility falls to the content author to discuss and incorporate the changes that were recommended by the Peer Reviewer.
Procedure 7.9. Incorporate Changes from Peer Reviewer
Review Comments
Open the XML User Guide, and review the comments made by the Peer Reviewer.
Incorporate Changes or Discuss
If the content author agrees with the feedback provided by the Peer Reviewer, the comments can be incorporated.
It is the responsibility of the content author to discuss any review comments that may require further clarification. After the content author and peer reviewer have reached an agreement, the agreed changes can be documented.
Ensure any discussions about content decisions are documented in the GCode Documentation Ticket.
Update XML Comment Block
Update the XML Comment Block to indicate the status of the chapter or section.
If changes do not require a re-review, change the STATUS to Editing, and update the date.
If changes require re-review, leave the STATUS as Review, and update the date.
Create Combined XML File
Run the mkbk script and create the all-[server name].xml file.
For command-line usage, refer to Chapter 4, Publican and Maven.
Commit all-[server name].xml to GCode SVN
Commit the file to GCode SVN, so the Hudson Build Server builds the doc from the correct file version.
Request Hudson to Build a HTML-Single
Generate the review document by instructing the Hudson Build Server to create a HTML-Single book.
Record the Build ID Number
After Hudson has successfully published the XML book to HTML-Single format, copy the direct link to the file and paste it into the ticket.
Update GCode Ticket
Add a comment to the GCode Documentation Ticket, stating that all review comments have been incorporated and that the enhancement is read for editing.
If the changes require a re-review, make a comment to this effect.
Send GCode Ticket to Next Phase
If a re-review is required, notify the Peer Reviewer that the content is ready for re-review.
If a re-review is not required, the changes can be forwarded to the next phase: Editing.
The role an editor plays in any documentation project is critical to maintaining consistency in the language and tone of the UDS. The Mobicents Editor (the Editor) is responsible for evaluating the content "as is", and is not responsible for the technical accuracy of the information. Therefore, the previous phases of Authoring and Review are essential to ensure that the information presented to the reader is as accurate as possible.
After the Editing request has been sent by the content author, the Editor is notified that an editing review is waiting through an email notification from GCode. Editing Documentation Changes describes the process the Mobicents Editor (the Editor) must follow to ensure the existing standards of the Mobicents UDS are maintained.
Procedure 7.10. Editing Documentation Changes
Open the Ticket
In the email notification, click the link in the ticket to take you to the GCode Documentation Ticket.
Open the HTML Document
The ticket should contain a direct link to the affected build version and section of the user guide hosted on the Hudson Build Server.
Click each link to be taken to the closest section containing each enhancement.
Refer to the details in the ticket to verify what you should be reviewing.
Make Editorial Changes
For minor changes relating directly to spelling and punctuation, the Editor must contribute the changes directly to the XML User Guide.
It is totally acceptable to send back a GCode Documentation Ticket that has not underdone a basic spelling and grammar check. Recommend to the content author that they spell check the changes before sending the ticket back.
Editorial Questions
Look at readability of the documented enhancement. Does it make sense when you read it? If not, what needs to be changed?
Is the content suitable for technical publications? Or does it fall into other genres, such as marketing, or white paper styles? Suggest ways of correcting the tone.
Review the XML Structure
For issues relating to the organization of the content, including display and general layout, ask the following questions:
Structural Questions
Are instructions and work flow steps contained in a <procedure> element, with <step> titles?
Are screenshots contained in a <figure> tag, with an appropriate caption?
Are <sections> nested too deeply? If so, provide recommendations on how the problem can be fixed.
Are paragraphs too long? Are there too many concepts per paragraph?
Diagrams should be present only if the information contained within them is essential for the reader to grasp a concept, or user interface. Well written procedures generally don't require supporting screen shots if the procedure describes the fields a user must complete. Excluding unnecessary screenshots increases the maintainability of the UDS.
Does the image flow outside the boundaries of the page (whether it is a PDF or a HTML page)
Comment on the Enhancements
When you encounter an area that requires improvement, you must document your suggestions in the XML file so the content author can review your suggestions in context.
XML comments are used to document Editor comments.
<!--Issue #[GCode Issue Number] Editor Comment - [describe what needs to be changed or clarified by the content author.]
In the comment, be as detailed as possible so the content author can effectively evaluate your suggestions.
Feedback can sometimes be perceived as criticism. For this reason, it is important to provide only constructive feedback to the contributing content author.
Update the Review Block Information for the Section
Update the XML Status Block for the Chapter or Section you are reviewing.
Change STATUS to Closure, and update the DATE CHANGED to the date of your review.
Commit Comments to GCode SVN
Once you have finished providing feedback, commit your XML comments and changes to GCode SVN.
Include a meaningful commit message to indicate what was done. For example:
Issue #666 - Editing - Committed comments made as part of Editing for this ticket.
Make note of the commit number.
Update the GCode Ticket
Once the XML files are committed, you must update the GCode ticket with the following information:
GCode SVN commit number.
Brief summary of suggestions for the content author.
The Editor comment syntax you used to mark any changes.
For example, "I've used "Issue #666 - Editor Comment" to mark my editorial comments"
Indicate whether a re-review is required after the recommended changes have been incorporated, or if the changes can go straight to the Closure phase.
Generally, a re-review is required when large changes are suggested by the Editor. It is important to verify that the content author has understood what you meant in your review comments, and has appropriately incorporated your suggestions.
For smaller changes, you can recommend that the content author make the suggested changes, and forward the enhancement onto the Fixed phase.
Send GCode Ticket to Next Phase
If a re-review is required, notify the Peer Reviewer that the content is ready for re-review.
If a re-review is not required, the changes can be forwarded to the next phase: Fixed.
This phase includes incorporating any changes from the Editor, and closing off the GCode Documentation Ticket.
Procedure 7.11. Incorporate Changes from Peer Reviewer
Review Comments
Open the XML User Guide, and review the comments made by the Editor.
Incorporate Changes or Discuss
If the content author agrees with the feedback provided by the Editor, the comments can be incorporated.
It is the responsibility of the content author to discuss any review comments that may require further clarification. After the content author and Editor have reached an agreement, the agreed changes can be documented.
Ensure any discussions about content decisions are documented in the GCode Documentation Ticket.
Update XML Comment Block
Update the XML Comment Block to indicate the status of the chapter or section.
If changes do not require a re-review, change the STATUS to Fixed, and update the date.
If changes require re-review, leave the STATUS as Review, and update the date.
Create Combined XML File
Run the mkbk script and create the all-[server name].xml file.
For command-line usage, refer to Chapter 4, Publican and Maven.
Commit all-[server name].xml to GCode SVN
Commit the file to GCode SVN, so the Hudson Build Server builds the doc from the correct file version.
Request Hudson to Build a HTML-Single
Generate the review document by instructing the Hudson Build Server to create a HTML-Single book.
Record the Build ID Number
After Hudson has successfully published the XML book to HTML-Single format, copy the direct link to the file and paste it into the ticket.
Update GCode Ticket
Add a comment to the GCode Documentation Ticket, stating that all review comments have been incorporated and that the enhancement is ready for editing.
If the changes require a re-review, make a comment to this effect.
Send GCode Ticket to Next Phase
If a re-review is required, notify the Editor that the content is ready for re-review.
If a re-review is not required, the ticket can be closed off according to the procedures in Ticket Closure Procedures.
Procedure 7.12. Ticket Closure Procedures
This procedure details how to close off the ticket after all phases are satisfactorily completed.
Create Combined XML File
Run the mkbk script and create the all-[server name].xml file.
For command-line usage, refer to Chapter 4, Publican and Maven.
Commit all-[server name].xml to GCode SVN
Commit the file to GCode SVN, so the Hudson Build Server builds the doc from the correct file version.
Update GCode Ticket
In the ticket, mention that the change has been completed and the all-[book name].xml file is generated and committed to GCode SVN.
Update the status to Verified.
Save and Close the ticket.