S1000D For Beginners
S1000D For Beginners
Beginners
By Santanu Bag
About
This is a guide for technical writers and illustrators. The world of technical
writing is changing from the linear writing concept of a beginning, middle and
end. It is moving toward a concept of having the precise information you need
exactly when you need it in the form that suits you best given the situation you
are in right now.
The group leading the charge in this mission is the international standards
organization S1000D.
The purpose of this book is to provide a guide for technical writers and
illustrators who want to deliver documentation in compliance with S1000D
technical publication standards.
Chapter 1 Good Old Days of Word
Most standard applications we have been using for years are not up to the
requirements of the digital age. Microsoft Word and other applications simply
cannot get the job done.
It is “open source” which means anyone can use those standards. It does not
require a specific software application, so, in theory simply producing text in
notepad will do, as long as you adhere to the rules of S1000D. And the primary
rule is that the data must be in .xml format.
XML
XML is a programming code that has been around since the 1960’s. XML
stands for eXtensible Markup Language. The programming code was designed
to store and transport data. XML was designed from the beginning to be both
human and machine-readable.
Look at it this way, XML is a set of rules for encoding documents electronically
through the use of markup. Its primary purpose is to facilitate the sharing data
across different information systems. It is a product of the World Wide Web
Consortium (W3C).
XML provides a foundation that anyone can use to build a document. It is not
proprietary nor “owned” by anyone. It does have a consortium of international
members who keep it an open, usable system for everyone. XML is used
globally. It was one of the first tools used for building websites, which became
HTML (Hypertext Markup Language).
And all of the documents are required to be delivered in XML format for
S1000D. First, before talking about XML, you need to understand how some of
the basic terms and definitions from the old days of printed copies and PDF
have changed.
eDocuments
Using Word we called it “a document”. Those who pay attention will notice that
I used the past tense for using the Word application. For those who obey the
rules of Simplified Technical English, we use the present tense. In the world of
electronic publishing (epub) we do not create “documents”. We create Data
Modules (DMs).
They are called “Data Modules” because it is all about the data. Text,
illustrations, dates, part numbers, warnings, cautions, notes. They are all
considered data.
In the old days this was the document name. In S1000D it is the Technical
Manual Identification Number (TMIN). The identification number has a
specific format. We will discuss the naming conventions for the TMIN in detail
later, but here are some examples.
Technical writers try to write a document so that the Readers will understand
what to do and how things work. And Technical Illustrators try to create
graphics so that Readers can see the components and determine the part
numbers they need.
S1000D was created to make both the text and graphical data digestible and
transferable and understandable by both the Reader and the equipment and
software program applications.
The standard for publication is more than just “text” and a “markup language”.
The S1000D is all about the data. The whole set of data: maintenance, customer
service, shipping and receiving, illustrations, parts, operating manuals and the
engineering drawings. All of it linked together in the digital format. At their
best, technical writers compile of the data into information that is useful. What
good is having the data if it is not readily available at your fingertips. Imagine
useful information that does not need to be reentered for other systems. This is
far more valuable than being handed “a PDF file” or a thumb drive with all of
your data.
Headers
They’re called “Page Headers” in Word. The same things in the PDF (Portable
Document Format by Adobe) version are called “Running Heads”. However,
some of the Software applications for e-books use the term “Viewer Bars”.
TMIN is basically the file name of the document. We will discuss this as a stand
alone topic to understand the requirements according to S1000D.
Footers
S1000D requires that Page Footers can contain UP TO three (3) pieces of data.
Up to 3 pieces of data and not more.
Change Management
Changes were designated using “Change Bars”, the big 4.5 point black bar that
was posted next to the stuff that changed.
Reasons for changes are summarized and recorded in the identification and
status section. We used to debate if the change bar threshold was more than
50% of the page, which made it hard to read, then we marked the footer as the
whole page was “revised” and removed the change bars.
By the time we got to revision Z, Roger lost all his hair. It had become to
unmanageable.
For S1000D all of the changes, except for editorial changes, must be marked
and provided a reason for update. The reason for update text is used to
automatically generate the Revision Summary for the technical manual (TM).
And if you think about it, it makes perfectly good sense that Changes can only
be marked for issues that are numbered 002 and above. There are lots of rules
in the game of S1000D. This one is just the beginning.
Issue Numbering
Sometimes referred to as “revision level” for the document, the “initial revision”
was designated as “IR” and then it became “Rev A”, and so forth.
S1000D revision tracking is called “Issue Number” and it starts with the draft
version which is numbered 000 and when it is approved and ready to release it
becomes the original issue 001. The next version becomes issue 002 and the
like.
Drafts
Drafts were sent out as “PDF” files and reviewed by the subject matter experts.
They ignored these drafts whenever possible. I don’t think anyone likes to read
anymore.
The attribute ‘inwork’ for the element <issueInfo> is used to track and control
the intermediate drafts until the final released issue. The initial “inwork’
number Shall be set to “01” and Shall be incremented with every change to the
data module.
Applicability
For every data module (DM) there are the questions of Applicability. These are
the settings to allow the end-user to tailor their view of the publications, by
selecting a specific configuration. These are usually physical characteristics
such as color or system, component, or piece part. But it can include other
aspects of modifications such as the manual change requests (MCR), field
changes, repairs, or even environmental conditions.
Bike Example
What makes S1000D far superior to just the written word is the data structure
for a Common Source Data Base (CSDB). The closest way I can to describe the
difference is that a word document is formed based on a formatting hierarchy.
The arrangement of the document is based on the rules of topics broken down
into smaller topics. The topics used to be called “First Order Headings”, and
topic underneath that was called a “Second Order Heading”. Each of these
nested topics would have a formatting assigned to them. The First Order
Headings were big and bold. The Second Order Headings were smaller and
maybe indented a little. You get the idea.
Common Source Data Base is a structure for data more like a map or a tree. In
this structure, “Food” is called the “parent”. “Meat” and “Fruit” are called the
“child”. And in a data base, a numerical id would be assigned to each “node”.
Databases are used when there is a lot of data so that when it is populated with
all the data someone can query the database to display only the information
they need to see.
CODB Structure
This is the CODB Structure for “Food”. To display the whole “food” tree, they
would run the function with an empty string as $parent and $level = 0:
display_children (‘ ‘,0); and it would return a list of all of the food. But that
level of detail is more than you really wanted to know. So let’s move past the
Good Ol’ Days of Word to see how the “data modules” replace “word
documents. ”
When the information is obtained from the database it is written in a code. For
example this is what it looks like to ask for all of the Customers by Name and
Age.
Chapter 2 The Data Modules
The data modules are one component. Other components of the S1000D
specifications are introduced as we need them for a technical writing project.
First, we focus on the data modules.
The concept of a data module is not new. Teachers used to tell us “start with an
outline”. When all is said and done, a data module, it just an outline. The Data
Module is a basic outline of topics and the order in which they should be
presented in a technical document.
There is a Data Module for basically every type of technical information that is
required. This chapter provides an overview of 4 data modules. This is where
you are supposed to ask: how where they rated? rated by whom? who funded
the research for the rating? Calm thyself. It was me. I rated them based on my
opinion of which data modules a technical writer or illustrator use the most.
unit within a technical publication”. So right out of the starting gate, we might
assume a data module (DM) as the same thing as a Word document. It would
be a starting point to understand the difference. Actually, it would be more
accurate to say that the data module is like a Word Template. So you could
assume that it would be as simple as using Word to “Save As” an “XML”
document. You could say that, but you would be wrong.
It’s what’s under the hood that counts. And we’ll get back to that in a minute.
First of all, it’s comforting to know the hard work to sort this all out was has
already been done. The AeroSpace and Defense Industries Association of
Europe (ASD) is the organization who produces standards and specifications.
They worked with Boeing, Lockheed Martin, General Dynamics and others.
Remember the Simplified English and writing rules. That was them. Remember
the iSpec220 that is “owned” by the ATA. That was them too. And now they
have created the S1000D for technical publications. The goal, of course, is to
standardize information. It all starts with various types of Data Modules (DM).
The data module types are described at www.s1000d.netTable . They are free.
The following table provides a list of my top five DMs. Remember that S100D
was developed specifically for Technical Publications, so these should sound
very familiar.
E ach data module has a “Contents” area which is what the end user sees and
“Meta Data” that the user does not see. The contents are described by the
module name: Descriptive, Procedural, Process, etc. But an important part of
the Data Module is the Meta Data that is “under the hood”, so to speak because
it is not seen by the end user.
Under the hood, the Meta Data provide the “hooks” to find information, and
sort data. When you use an internet browser to search for “jazz, music, guitar”
the words are meta data tags which search the stored data to retrieve Fats
Waller, Diann Krall, We Mongomery, Joe Pass.
S1000D has defined the meta data. This is what enables the transport of the
documentation between various s. No matter whose data base stores the data,
the meta data is the same. No matter who wrote the application to reach the
document, the information is readable
The DMC is the unique “description” for the document in short hand form.
Later on we will discuss the details, but for right now here is a preview of
upcoming events. The DMC must be included in the header information for
S1000D. The DMC contains the following information:
MODEL
The Model is the model or overall to which the technical data is applicable. My
motorcycle is an F650 model made by BMW. The model is assigned by the
company or programming manager when the data module is created for a
specific project.
SYSTEM CODE
The system is a generic method of organizing the information. The S1000D
System and Subsystem codes are extensive. The following table presents several
different codes which might be useful
system and subsystem without affecting the type, model or variant identity. The
System Variance Codes are used to identify information that is specific to one
unique configuration.
This fits the need when there are twin models produced. For example, there is a
system number for the standard F650 right off the assembly line, and there a
code to identify the customized F650s which are created. Each customized bike
is assigned a “systemDiffCode”.
T he standard numbering system is not new. The code was created a way to
break the whole assembly into smaller components. The same group that
developed the Standard Numbering System (SNS) also created the S1000D
system. Typical standard breakdown of components would be the motor, the
drive train, the electrical components.
For the aircraft industry, the ATA Standard Numbering System is provided in
the ATA iSpec 2000 reference document. This document provides the
Information Standards for Aviation Maintenance. So if you work on airplanes
and you want to know about the air conditioning system, the answer is always
the same: “Section 21”. Th the main distribution system for the air conditioning
is always in Section 21. Within the Section of Air Conditioning there are
chapters. Chapter 23 is recirculation. The “Chapter” is broken down into
additional pair of numbers. The Air Return Grill is, for example, 03 while the
sidewall risers are 04. So to find the information on air conditioning air return
grill, look in 21–23–03. If you are looking for side wall riser information go to
21–23–04. So, you will notice that the SNS is a hierarchy of three pairs of
numbers. The following table presents a examples for SNS codes for the aircraft
business.
U sed when two or more data modules share the same number a
disassembly code variant can be created to identify the level of disassembly for
the variation. For those who are familiar with illustration parts catalogue this is
the Alternative Logistic Control Number (ALC) or the Alternate Indentured
Product Code (AIPC).
FUNCTION CODE
function code is a 3-digit number. A short list of the Primary functional codes
are provided in the following table.
A 400 level function code provides fault reports and isolation procedures.
Whereas 500 level function codes provides instructions to disconnect, remove
and disassemble something. The following table provides a sample of the most
often used primary function codes. The entire set of function codes is literally
pages and pages of selection available.
Function Codes for Task Descriptions
T he Function Code Variant is a one Letter assignment. The basic, off the
shelf item starts with the letter A. Instructions for a specific installation, or a
one-off is indicated by letter B. This provides ability to deliver specific task
instructions.
ITEM LOCATION
I tem Location code identifies the location of the unit on which maintenance
These become the “hooks” by which any data is retrieved from the database. So
if you want to know which valves were installed and where three years from
now, how these fields of information are filled become vitally important. Worst
of all, if you are inconsistent in the manner in which the data is populated it will
be a giant mess.
The quality of the data out is only as good as the data put into the database.
Before the project even begins, document how the DMC is defined. Make sure
this is a “live” document and updated as the project is refined. Make sure
everyone has access to the latest and greatest copy of the document too.
Chapter 3 Elements and Attributes, Oh My!
Structured Documentation
<note>
</note>
Containers
Data Modules are made of container elements. In XML the container is the area
enclosed by the beginning and ending brackets and looks like this <container>.
If you right-mouse click on an XML document you can choose to open the
document using WordPad..
One of the more common container elements is the <Figure> element. The
figure element must contain not only the graphic image but it also needs a list
of attributes for the figure, such as the file name of the graphic, the figure title,
etc.
Elements
Elements have ‘names’ and the name describes the type of data they contain.
Going back to the example of the <person> element. As you would expect, the
data contains information about the person.
Some elements are considered “containers” because they contain more than
one piece of information. Typically they hold more detailed data, or attributes
about the data. The attributes stored in a data element are sometimes called
“child elements” because they are children of the main element.
Attributes
Consider the <date> element. The attributes are “month”, “day” and “year”. But
<date> can be formatted in many different ways. Some places write Jan 07,
2021 while other places write 07 JAN 21, and it could also be seen as January 7,
2021. Or even 01/07/2021. You know what I mean.
Because there are many ways to enter the same information there are
restrictions on the values. Th next figure is an example of an element named
“initials” who is restricted to three capital letters.
No, you don’t have to know how to code. But you do have to know the rules of
entering data. And with each restriction there is a rule. The rule in this instance
means that you have to enter the text as three all capital letters.
For creating data modules, the most important things to remember are the fact
that each data module has a set of elements and attributes. Some elements and
their attributes are seen as content, while other elements and their attributes
are not seen by the user. A specific string of elements creates the Data Module
Code (DMC) — the “name” of the data module. And finally, some elements and
attributes are mandatory (M) while others are optional (O). Those are the
basics to create any data module.
Note too that not all elements are in every data module. This next figure shows
the list of element and attribute names with an “x” indicating which data
module it can be used in. For example, a <checkListProcedure> is only found in
the Checklist Data Module. However, the element <commonInfoDescrPara>
can be used in the Procedure, Fault, Checklist and Process Data Modules.
But before we get into the details of creating a data module, there are some
other terms and definitions that useful to know.
Cardinality
Namespaces
XML is not new. It was created in 1996 I kid you not. It is an “open standard”
which means it’s free to use. But that also means it is free for everyone to
interpret the code in a way that suits their needs best. Consider yourself
warned.
The actual document for XML comes in two parts: the markup and content. A
whole chapter is dedicated to this later on.
The first thing for Technical Writers and Illustrators to know is that XML is a
“tree hierarchy”. The Reader’s Digest Big Print version of this means that all of
the files have to be kept to be inside the same electronic file folder. There
cannot be a separate file folder for “illustrations”.
Because there are so many pieces of the XML puzzle that combine to make a
document, it is necessary to house the complete palette of elements,
illustrations and the schema in a database. The aim of the CSDB is to provide a
user friendly automatic process to build the documentation. Oh excuse me, the
proper term is called a Publication Module (PM). It’s a more accurate
description really. The final product is more than just a document or set of
documents.
The data module requirements list defines the data modules to be created. It is
the “intended content list” for the data base. This usually becomes the con-
tractual document, the list of deliverables between the technical
writers/illustrators and the documentation owner.
Chapter 4 Schema
This is where things get interesting. Patiently we will start with the elements
and attributes that are includes in every data module. Then we will address the
elements and attributes specifically for a Descriptive and Procedural modules.
We chose the Descriptive and Procedural type modules because they are used
so often.
dmodule
One of the first decisions is what type of data module is applicable.
Standardization of Data Modules were created by piecing together smaller
frequently used schema. These are the basic data modules, sometimes written
dmodule, or DM.
Basic data module types are named: “crew module”, “Description Module”,
“Illustrated Parts Data Module”, “Procedural Module” to name a few. Start with
the dmodule type that best describes the data.
Let’s look at a data module to see what it looks like under the hood. The
following is an illustration of a Procedural Module. The identandStatusSection
is a container type element. It contains the identExtension and the dmCode.
Remember opening the wooden Russian Nesting Doll? In this case the nesting
dolls are small schema nested inside of other schema inside other schema and
the container is called the Data Module.
And remember that each container element has a set of attributes to go with it.
The required attributes are indicated by the red boxes in the illustration.
Next let’s take a look at a few important elements. I’ll show the elements this
time in the form of a table instead of an illustration so you can see and example
of the attributes and what they mean.
dmCode
The data module code is essentially a code to tell you what is inside the data
module without having to open it. It must be a unique identifer. There can be
no duplicates. The dmCode says it all — what type of data module is used, what
stage of disassembly it is in, where it is located and other information.
The <dmCode> uses the attributes to form part of the unique identifier and it is
called the data module code.
The following provides an example of the dmCode. These attributes are at the
top of the data module. They describe what information is contained within the
data module.
dmCode
Schema
For our purposes, a Schema is a small set of elements and attributes that suit
our needs and we assign a name to it. Just like playing poker certain hands are
given names like “Royal Flush” or “Straight Flush”, the XML world has sets of
elements and attributes they define for specific uses. Publishers use the
DocBook schema or Publishing Requirements for Industry Standard Metadata
(PRISM). Vector images use the schema called Scalable Vector Graphics (SVG).
Graphical User Interfaces (GUIs) schemas as Extensive Application Markup
Language for Java (FXML) or XML User Interface Language (XUL). People
who create forms use XForms.
ePublishing
Electronic publishing is the process of issuing the modules and associated data
in machine-readable form rather than on paper. Because the content is
electronic it may be distributed over the internet and users can read the
material on a wide rage of electronic and digital devices. The names of
ePublishers is available to anyone with a Browser to search for “epublisher” and
access to the internet.
apps
Way back in the dark ages of 2010 native software applications were required to
reside on each platform. Customers are driving the manufacturer’s toward
universal device, but we are not there yet.
Amazon has Kindle. Everybook, Inc has an Everybook Dedicated Reader, the
Franklin eBookman has a device similar to the Palm Pilots and phones, but
with a larger screen. Heibook combines the XML based,OEB-compliant eBook
reader with an MP3 player and games with an audio recordder. FXPALs Xlibris
makes a high resolution tablet with a pen. Nuvomedia has an ebook device
called the Rocket eBook. There are many more.
Format
One of the more common file formats for electronic publishing is e-pub. It is a
free and open standard available in may publishing programs. Another one
is .folio which is used by Adobe for the iPad tablet and apps.
Interactive Electronic Technical Manuals (IETMs) are used by the military. The
military specification MIL-STD-40051 is the perparation of Digital Technical
Inforamtion for Interactive Electronic Technical Manuals (IETMs). Those
standards cover everything except aviation.
In computing the XML is a markup language that defines a set of rules for
encoding the documents and its information into a format that is both human-
readable and machine-readable.
XML Parcer
An XML Parser “reads” the document. When we said that the XML is read by
both machines and people, this is the machine part of reading the XML. The
parcer provides the means to enter a new data module, access existing data or
modify the data. Essentially, it parces the data into separate parts: the data,
illustrations and the structure. There are entire books written regarding how to
implement the various parsers. We do not need to go into any of that here.
The important thing to remember for writers and illustrators about an XML
Parcer is that it performs a validation. It checks to verify that a “procedural
schema” matches the requirements defined at
the http://www.w3.org/XML/XMLSchema/. Else, the document “fails” and
isn’t even read into the system. So check your document against the applicable
schema requirements. Just exporting a document from MicroSoft Word
into .XML doesn’t cut it. Not even close.
This is how manuals are usually written: Tech writers and Illustrators create a
first draft of the information based on initial specifications — what the
customer said they wanted and what we said we would deliver.
Of course, by the time it’s all said and done, the final approved released
documentation barely resembles the first draft. The first draft is a total waste of
time. As part of the frustrating review process, engineers walk and talk while
they recant their adventures of 20 years ago when somebody cared. Tech
writers assemble the drafts based on the released drawings, which engineers
promptly rip apart and say those were preliminary drawings. You’d think that
by P27 the “preliminary” draft would be close. Not so much. And the process
starts over again. Finally, the document is published
That part hasn’t changed. sorry. It has just gotten more complicated.
Structured Documents
One of the reasons to migrate from the old style creating documents using
MicroSoft Word to a structured framework is work efficiency. There is a simple
misconception of how tech writers spend (or should spend) their time. This
prevailing notion believes that “writers,” spend a large part of their time
managing and publishing information and most of the time “writing”. Actually,
very little time is spent “writing”. Most of the time is spent looking for
information, or waiting for information from someone else. Because of this
misconception, it is hard for some to understand how efficiently a properly-
designed structured authoring environment could be. Technical writing has
never been about how fast you type. It has always been about how fast you can
compose and organize the content to meet all of the standards and be
understood by the end-users.
What makes S1000D far superior to just the written word is the data structure
for a Common Source Data Base (CSDB). The closest way I can to describe the
difference is that a word document is formed based on a formatting hierarchy.
The arrangement of the document is based on the rules of topics broken down
into smaller topics. The topics used to be called “First Order Headings”, and
topic underneath that was called a “Second Order Heading”. Each of these
nested topics would have a formatting assigned to them. The First Order
Headings were big and bold. The Second Order Headings were smaller and
maybe indented a little. You get the idea
Common Source Data Base is a structure for data more like a map or a tree. In
this structure, “Food” is called the “parent”. “Meat” and “Fruit” are called the
“child”. And in a data base, a numerical id would be assigned to each “node”.
Databases are used when there is a lot of data so that when it is populated with
all the data someone can query the database to display only the information
they need to see.
Drafts
Drafts were sent out as “PDF” files and reviewed by the subject matter experts.
They ignored these drafts whenever possible. I don’t think anyone likes to read
anymore
Tracking Changes
Changes were designated using “Change Bars”, the big 4.5 point black bar that
was posted next to the stuff that changed
Reasons for changes are summarized and recorded in the identification and
status section. We used to debate if the change bar threshold was more than
50% of the page, which made it hard to read, then we marked the footer as the
whole page was “revised” and removed the change bars.
By the time we got to revision Z, Roger lost all his hair. It had become too
unmanageable.
For S1000D all of the changes, except for editorial changes, must be marked
and provided a reason for update. The reason for update text is used to
automatically generate the Revision Summary for the technical manual (TM)
And if you think about it, it makes perfectly good sense that Changes can only
be marked for issues that are numbered 002 and above. There are lots of rules
in the game of S1000D. This one is just the beginning
Changes to documentation requires using “elements”. The change element
looks like this: <reasonForUpdate>. The attributes, or choices for that element,
are ‘changeMark’, ‘changeType’, and ‘reaonForUpdateRefIDs’.
This is for those who are writing specifically for the aircraft industry. If this is
not you, just skip it an move along.
The group previously known as the Air Transport Association became the
Airlines for America. The document they provided, the ATA iSpec 2200,
provided the recommended specifications for the content, structure and
deliverables to meet the communication requirements, those being the
physical, electronic and future technologyof aircraft product technical
information.
The objective of the iSpec 2200 was to minimize the cost and effort and
exchange of information to meet the airline operational needs. the iSpec 2200
is a document-centered standard.
The iSpec 2200 provides the Document Type Definitions. The following is a
partial list:
S1000D
The S1000D basic document is a data module. A data module is the minimal
information document for exchange of information. It is the smallest and
standalone information unit conveying a particular type of information about
specific parts of the Product.
One of the best features of modular text is that segments can be re-used. And if
the information is updated, it is updated everywhere at the same time.
The CIR is the library of standard text. For example, it would be a set of
warnings. Warn-0525 could be “DO NOT GET CLOSE TO….”
An example of CIR is as follows:
Warnings Format
The default heading WARNING must be in 12/14 pt bold, uppercase and under-
lined centered on the width of the warning itself. This needs to be separated by
8 pt after the previous text paragraph. The actual warning text starts 8 pt
AFTER the WARNING heading. Keep the WARNING heading and the actual
warning text on the same page.
Cautions Format
The default heading CAUTION must be in 12/14 pt bold, uppercase and NOT
underlined centered on the width of the caution itself. This needs to be
separated by 8 pt after the previous text paragraph. The actual warning text
starts 8 pt AFTER the CAUTIONG heading. Keep the CAUTION heading and
the actual caution text on the same page.
The schema is from the S1000D organization. At the top of the data module is a
link to the
URL http://www.s1000d.org/S1000D_4-0/xml_schema_flat/descript.xsd wh
ere it reads the schema file.
Next we introduce each of the required elements in the order in which the data
is entered. The Data Module Code (DMC) is automatically created and placed at
the top of the document, which is also a requirement of the S1000D.
identAndStatusSection
identExtension
This is one of the Business Rules you decided. The goal is to have a unique
identification for the data modules. The <identExtension> establishes a unique
subdomain for instance identification. In other words, this is the first identifier
for the group of data modules.
It has two attributes: The (M) means it is mandatory to enter the data.
-extensionProducer (M), is typically the CAGE code of the producer of the data
module instance. Or it can be the unique number for the manual set.-
extensionCode (M), the data module extended code. The value is decided by the
data module producer.
dmCode