Content Hierarchy
Sage is organized in a hierarchical fashion – from the top down:
- Volumes
A volume is a top-level subject area, such as "MiniCalc", "Rinse", "DSEdit", or "Fluent SQL". Volumes share a namespace, so each volume needs a unique title. - Topics
A topic is a sub-area within a volume. Topics form a hierarchy (of any depth), and share a namespace within their enclosing volume. Duplicate topic titles within a volume are allowed. To avoid ambiguity in such cases, you need to assign a unique alias to all (or all but one) of the topics that share the same title within a volume. Regardless, topics that share the same immediate parent cannot have the same title. - Articles
An article defines a single web page of Sage content. Articles reside under a volume or topic. Just like topics, articles may have the same title, but not if they belong to the same immediate parent (volume or topic). Articles share the same namespace as the topics under the relevant volume. Thus, under a given volume, if topics/articles have the same name, a unique alias must be given to all (or all but one) of them. - Sections
A section is a heading in an article. Sections form a hierarchy of depth limited to six (this limitation stems from the fact that HTML offers tags <h1> through <h6>, but nothing after that). Sections within a given article share a namespace, but sections may have the same title. To avoid ambiguity in such cases, you need to assign a unique alias to all (or all but one) of the sections that share the same title within an article. Regardless, sections that share the same immediate parent (article or section) cannot have the same title. - Here Tags
A "here tag" is a location in an article that may be linked to (from the same article, or from elsewhere). Here tags do not have titles (only aliases), and share the same namespace as sections within the same article.
This tag defines a Sage volume,
the top level in the Sage Hierarchy.
The volume consists of all content between the [volume]
tag and the matching [end] tag.
The syntax for the [volume] tag is as follows:
[volume <title> aka <alias1> aka <alias2> ...]
[//] volume contents: [topic] and [article] tags
[end]
Volumes cannot nest:
you must end one volume before starting another.
In the Sage web application, volumes are organized in a tree,
by First Trust department.
This tree structure is based directly off the Code Vault
folders in $/Documentation/Sage .
Regardless, volumes still need unique names;
the tree is merely an organizational convenience.
The [TreeCaption] tag can specify a shorter
title for a volume, which will be used when the volume
is referenced in the context of the volume tree.
For example…
[volume Enterprise Config Architecture aka EntConfigArch]
[TreeCaption]Configuration[end]
[article ...]
...
[end]
Above, the volume's title is Enterprise Config Architecture,
which will be used in the alphabetical list of all volumes.
However, when listing this volume in the volume tree,
it will be displayed as Configuration instead.
Presumably, this volume is located in a folder hierarchy
that resembles the following…
Enterprise
Architecture
So, the volume tree will look something like this…
Enterprise
Architecture
Configuration
Without the [TreeCaption],
the full volume name would appear in the tree…
Enterprise
Architecture
Enterprise Configuration Architecture
The [TreeCaption] tag must be coordinated
with the directory structure maintained in Code Vault.
Aliases are often optional, but serve three purposes…
- You can link to an entity (volume, topic, article, or section) by its full title, or by any of its aliases. Typically, aliases provide a shorter way to link to an entity. Additionally, when the Sage web app generates a URL linking to an entity, the URL will be based on the entity's first alias (or the full title, if there are no aliases). This keeps the browser's URL bar cleaner, makes for nicer bookmarks, and allows readers to make and share URLs that are easier to work with.
- If you want to change the title of an entity, but there are already links to the entity's title "in the wild", you can change the title, but leave the old title behind as an alias. This way, existing links will continue to function. After fixing all such links, you can remove the unused alias.
- Aliases establish unique names to the entities that share a namespace, allowing duplicate titles (though never within the same immediate parent). Note: volumes may not have duplicates titles, regardless of aliases. This is because, in effect, all volumes share the same parent: the invisible library that contains all volumes.
If a title or alias contains (as a whole word) the string "aka",
then it must be enclosed in quotes (single or double).
This also applies if the name contains single quotes,
double quotes, and/or close square brackets.
Within a string, double up quotes to escape them.
If a title is long and/or has a sprinkling of symbol characters,
you should consider using an alias, to keep the URL cleaner.
For example…
[volume A long title, with :special +symbols &to =make ?trouble]
Although the above is a valid title, the corresponding URL
is long and difficult to read (because several of the characters
will be percent-encoded):
.../A+long+title%2C+with+%3Aspecial+%2Bsymbols+%26to+%3Dmake+%3Ftrouble/
An alias solves the problem…
[volume Long title, with :special +symbols aka LongTitleWithSymbols]
The URL now becomes...
.../LongTitleWithSymbols/
If a title contains pound signs (#) or forward slashes (/),
an alias is required (and aliases may not have either of these
characters, as they are used as separators in the URL).
On a related note, if a title contains pound signs or forward slashes,
you cannot create links using the title, only using the alias(es).
The [title] tag allows you to use Sage markup
when specifying the title for a section.
For example…
[section]
[title]Why e[^]i[&pi][end] Equals -1[end]
Euler's Identity...
[end]
Above, the section's title is: Why eiπ Equals -1.
To include aliases for this section…
[section aka EulersIdentity aka EulersFormula]
[title]Why e[^]i[&pi][end] Equals -1[end]
Euler's Identity...
[end]
Above, the section has two aliases:
EulersIdentity and EulersFormula.
As mentioned here,
Sage uses an entity's first alias when linking to the entity
(or its title if there are no aliases).
However, it is sometimes preferable to use the title,
even when there are aliases.
To accomplish this, use the PrimaryLink attribute,
which immediately follows the title…
[article Objects PrimaryLink aka Obj1 aka Obj2]
Above, the article may be referenced in links
via any of these names: Objects, Obj, and Obj2.
However, when Sage generates a link to this article,
it will use Objects.
Without the PrimaryLink attribute,
Sage would generate links using the first alias, Obj1.
There are several scenarios where PrimaryLink may be useful…
- If all of the aliases are outdated terms, you probably want Sage to avoid using those aliases, in favor of the title itself.
- Even if one or more of the aliases are still current, the title itself may be the preferred option.
- Most importantly, for sections and articles, if multiple entities in the same namespace have the same title, Sage requires each to have an alias, and at that point, the title isn't usable in links. With PrimaryLink, you can identify one of the entities as the one that the title should link to.
This tag defines a Sage topic, a hierarchical organization
within a volume. Topics may include articles and/or other topics.
The topic consists of all content between the [topic]
tag and the matching [end] tag.
The syntax for the [topic] tag is as follows:
[topic <title> aka <alias1> aka <alias2> ...]
[//] topic contents: [topic] and [article] tags
[end]
For more information on the title and alias,
see Titles and Aliases.
Topics may only appear within a volume (or nested in another topic).
This tag defines a Sage article, a single web page of content.
The article consists of all content between the [article]
tag and the matching [end] tag.
The syntax for the [article] tag is as follows:
[article <title> aka <alias1> aka <alias2> ...]
[//] article contents: markup text, organized by [section] tags
[end]
For more information on the title and alias,
see Titles and Aliases.
Articles may only appear within a volume or a topic.
Sage markup (text, images, etc.) may only appear in an article,
not directly in a volume or topic.
This tag defines a Sage section,
a hierarchical heading within an article.
The section consists of all content between the [section]
tag and the matching [end] tag.
The syntax for the [section] tag is as follows:
[section <title> aka <alias1> aka <alias2> ...]
[//] section contents: markup text, including nested sections
[end]
For more information on the title and alias,
see Titles and Aliases.
Sections may only appear within an article,
and my nest up to six levels deep.
If you want to use Sage markup for the title,
use a [title] tag (which must appear
immediately after the [section] tag,
except for whitespace).
For example…
[section ToyStory][title]To [&infin] and ~Beyond~[end]
[//] section contents: markup text, including nested sections
[end]
The above example creates a section heading that includes
the infinity symbol, and an underlined word:
Also, note that the alias(es) are supplied as the body of the
[section] tag (and at least one is required).
Use "aka" to specify additional aliases:
[section ToyStory aka TS][title]To [&infin] and ~Beyond~[end]
[//] section contents: markup text, including nested sections
[end]
The above section has two aliases: "ToyStory" and "TS".
To ∞ and Beyond
This tag defines a Sage "here tag", a location in an article
to which links may be defined.
This tag has no corresponding [end] tag.
The syntax for the [here] tag is as follows:
[here <alias1> aka <alias2> aka <alias3>...]
For more information on the title and alias,
see Titles and Aliases.
Here tags may only appear within an article.
⏱ Last Modified: 10/24 9:45:52 am