XML Format

The format of the XML file is described here.


The overall hierarchy of tags is listed here. Except for data, every tag should be contained within the preceding tag.

tag nameAttributesNotes
campaignNo attributesRoot Element.
contentsNo attributesOnly one of these should appear. It should contain all information.
chaptertitleEach chapter represents a different page.
sectiontitle, doIndex, indexTitleBelongs within a chapter
subsectiontitle, doIndex, indexTitleBelongs within a section
parttitle, doIndex, indexTitleBelongs within a subsection
subparttitle, doIndex, indexTitleBelongs within a part
dataNo attributesBelongs after the contents. Detailed below.

The attributes allow more information.

titleThe description that should accompany the tag's content.
doIndexIf this attribute is present, add this title to the index. Do not use with indexTitle
indexTitleUse the value within this attribute as an index item. Do not use with indexTitle

HTML formating nodes

While writing information down, you will frequently want to change the formatting. You can use the tags listed here to do that. Most are identical to the HTML tags.

tag nameAllowed AttributesNotes
pNo attributesParagraph delimiter
iNo attributesItalics
uNo attributesUnderline.
bNo attributesBold
tableStandard HTML attributes Create a table
tr, th, tdStandard HTML attributesStandard HTML table tags
ol, ul, liStandard HTML attributesOrdered list, unordered list, list item
imagesrc, widthImage
blockquoteStandard HTML attributesQuote block
brStandard HTML attributesLine break
supStandard HTML attributesSuperscript

Listing elements

If multiple items need to be listed, they can be grouped using these tags.

Group nodeGroup item nodeTitle attributeDescription
equipmentitem@titleUsed for listing physical objects
peopleperson@titleUsed for listing peoplke
datalistitem@titleUsed for listing other things. E.g. languages.
serialNumbersserial@idAllows you to list things, and give them a serial number. For example, if the players discover a bottle with liquid in it, you can assign it a serial number and keep track of it in the XML, until the players figure out what exactly is in the bottle.
loglistlog@dateA method of keeping a quick log organized by date.
timelineevent@titleMethod for keeping track of history. Described in more detail below.


The <timeline> tag is used to encapsulate a number of <event> tags. It has one attribute, @display, which indicates the calendar to use for all events within. The calendar is described in the data section.

The event tag specifies one single event. The default calendar is used, unless overridden by the <timeline> tag. This tag has several attributes:

@yearThe year of the event. This is specified in the default calendar year, not the timeline calendar.
@monthThe index of the month of the event, starting at 1.
@dayThe day of the month of the event. Only used if @month is present.
@titleThe title for this event. It will appear in bold in the website.
@yearFilterIndicates a filter for the year itself. Useful if you want the event to be listed, but don't necesarily want the exact year to be known.
@circaIf you want "Circa" to appear next to the year of this event, in case the exact year isn't known.
@toIf the event happens over a range of years, this attribute lets you specify the end year (in the default calendar.)


The <filter> tag is one of the most important tags you can use. You use it to control what is visible to whom. The usage is fairly simple. There is only one attribute: @allow.

The @allow attribute indicates the one identifier that will be allowed to see the contained content. The identifier can either be a character id, or a specified filter in the data section.

Data section

The data section is where overall information about the campaign is stored so that other parts have access to it. There are three parts to it.


This is where you would indicate all the known filter identifiers and the associated colour. You can also specify if the filter is visible to most people. A typical filter list would appear like this:

<filters default="DM"> <filter name="DM" color="92A3CF"/> <filter name="Elf" color="10FF10"/> <filter name="Druid" color="EEB422"/> <filter name="Grad" color="FCDFFF" hidden="1"/> </filters>

The <filters> container has a single attribute, @default. This attribute indicates what the default filter is if the @allow attribute isn't specified.

Each <filter> tag is a representative of a type of filter. The name is what would be specified in a typical <filter>'s @allow attribute. The @color indicates the colour to use for things that are within the filter. There are several websites that allow colour picking.

If the @hidden attribute is present, then things filtered by this id will not be coloured; unless you are creating the master document. The reason for this is so that you can have certain parts of your campaign that might be filtered, but you don't want to bring attention to them. For example, you might have two campaigns going on with the same document, and you want them kept separate. But you still want to see what parts are filtered in the master version.


This section is for displaying the correct information for historical information. The <calendars> tag has one attribute, @default, which contains the symbol for the default calendar if no timeline is specified. Within the <calendars> are <calendar> and <month> entries. All calendar entries will be relative to the default.

Each <calendar> element has several attributes.

@symbolThe symbol that should be used to indicate years with this calendar. For example, the Gregorian calendar would use symbol="AD"
@nameThe name of this dating system. This is not used anywhere (yet) but is merely useful for your own information. e.g. name="Gregorian".
@startThe first year of this calendar system. If it is missing, then 0 will be used. Frequently you will need to put "1" for this; you would need to for the Gregorian calendar. This is because some cultures start their new dating system with an impressive 1, when mathematically they should start with a 0.
@offsetThe difference between this calendar and the default calendar. A better way to describe it is what year would the first year be in the default calendar.
@negSymbolThe symbol to use for years that happen before the start date of the calendar. For the Gregorian calendar, this would be negSymbol="BC"

Each <month> element has several attributes. Each represents the name of a month in this campaign. If you are using standard English month names, then you do not need these elements.

@indexThe number for the month. For example, if you were implementing the Gregorian calendar, the index for February would be 2
@nameThe name of the month.


This section is where you can specify the information specific to each character. This will appear in the Appendix of the web site. Each person is tracked by their own <character> tag which is somewhat equivalent to the <section> tag, and has the following attributes:

@nameThe full name of the character. This will be the title of the section that contains information about them.
@idThe name of the filter that will be used for this character. This is separate from the list in the <filters> part.
@indexTitleHow this character should appear in the index.
@colorThe colour to use for parts that are filtered for this character.

There are also several subtags that are expected:

attributeThis tag, which can appear multiple times, has an attribute of @name, which indicates what filters this character should be able to see.
publicAnything within this tag will be visible for all people. It can be treated as the content of the <section> for this character.
subsectionAs the <character> is equivalent of a <section>, you can separate out information. However, unless it is within the <public> tag, it will be filtered out for other characters.