The format of the XML file is described here.
Hierarchy
The overall hierarchy of tags is listed here. Except for data
, every tag should be contained within the preceding tag.
tag name | Attributes | Notes |
---|---|---|
campaign | No attributes | Root Element. |
contents | No attributes | Only one of these should appear. It should contain all information. |
chapter | title | Each chapter represents a different page. |
section | title, doIndex, indexTitle | Belongs within a chapter |
subsection | title, doIndex, indexTitle | Belongs within a section |
part | title, doIndex, indexTitle | Belongs within a subsection |
subpart | title, doIndex, indexTitle | Belongs within a part |
data | No attributes | Belongs after the contents. Detailed below. |
The attributes allow more information.
Attribute | Description |
---|---|
title | The description that should accompany the tag's content. |
doIndex | If this attribute is present, add this title to the index. Do not use with indexTitle |
indexTitle | Use 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 name | Allowed Attributes | Notes |
---|---|---|
p | No attributes | Paragraph delimiter |
i | No attributes | Italics |
u | No attributes | Underline. |
b | No attributes | Bold |
table | Standard HTML attributes | Create a table |
tr, th, td | Standard HTML attributes | Standard HTML table tags |
ol, ul, li | Standard HTML attributes | Ordered list, unordered list, list item |
image | src, width | Image |
blockquote | Standard HTML attributes | Quote block |
br | Standard HTML attributes | Line break |
sup | Standard HTML attributes | Superscript |
Listing elements
If multiple items need to be listed, they can be grouped using these tags.
Group node | Group item node | Title attribute | Description |
---|---|---|---|
equipment | item | @title | Used for listing physical objects |
people | person | @title | Used for listing peoplke |
datalist | item | @title | Used for listing other things. E.g. languages. |
serialNumbers | serial | @id | Allows 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. |
loglist | log | @date | A method of keeping a quick log organized by date. |
timeline | event | @title | Method for keeping track of history. Described in more detail below. |
timeline
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:
Attribute | Description |
---|---|
@year | The year of the event. This is specified in the default calendar year, not the timeline calendar. |
@month | The index of the month of the event, starting at 1. |
@day | The day of the month of the event. Only used if @month is present. |
@title | The title for this event. It will appear in bold in the website. |
@yearFilter | Indicates 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. |
@circa | If you want "Circa" to appear next to the year of this event, in case the exact year isn't known. |
@to | If the event happens over a range of years, this attribute lets you specify the end year (in the default calendar.) |
Filters
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.
<filters>
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.
<calendars>
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.
Attribute | Description |
---|---|
@symbol | The symbol that should be used to indicate years with this calendar. For example, the Gregorian calendar would use symbol="AD" |
@name | The name of this dating system. This is not used anywhere (yet) but is merely useful for your own information. e.g. name="Gregorian". |
@start | The 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. |
@offset | The 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. |
@negSymbol | The 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.
Attribute | Description |
---|---|
@index | The number for the month. For example, if you were implementing the Gregorian calendar, the index for February would be 2 |
@name | The name of the month. |
<characters>
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:
Attribute | Description |
---|---|
@name | The full name of the character. This will be the title of the section that contains information about them. |
@id | The name of the filter that will be used for this character. This is separate from the list in the <filters> part. |
@indexTitle | How this character should appear in the index. |
@color | The colour to use for parts that are filtered for this character. |
There are also several subtags that are expected:
Tag | Description |
---|---|
attribute | This tag, which can appear multiple times, has an attribute of @name, which indicates what filters this character should be able to see. |
public | Anything within this tag will be visible for all people. It can be treated as the content of the <section> for this character. |
subsection | As 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. |