Shipwright/ZAPDTR/docs/zapd_xml_spec.md
M4xw 5dda5762ba git subrepo clone https://github.com/HarbourMasters/ZAPDTR.git
subrepo:
  subdir:   "ZAPDTR"
  merged:   "a53a53ea4"
upstream:
  origin:   "https://github.com/HarbourMasters/ZAPDTR.git"
  branch:   "master"
  commit:   "a53a53ea4"
git-subrepo:
  version:  "0.4.1"
  origin:   "???"
  commit:   "???"
2022-03-22 02:54:48 +01:00

1.4 KiB

ZAPD XML specification

ZAPD XMLs use a restrictive subset of the XML standard: any ZAPD XML must be a valid XML (All elements starting with <tag> ending appropriately with </tag>, single "empty-element" tags with / at the end, etc.).

Reminder that in

<a>
    <b1>
        <c/>
    </b1>
    <b2>
        <d/>
    </b2>
    <e/>
</a>

<b1>, <b2>, <e/> are children of <a>, but <c/> is not. <c/> is a descendent of <a> and a child of <b>.

  • Every XML's outermost element start/end tag is a single <Root>.

  • The children of a <Root> must be <File>s.

  • A <File> has resources as children. A resource is almost always single empty-element tag, and has one of the types

    • <Texture>
    • <Background>
    • <Blob>
    • <DList>
    • <TextureAnimation>
    • <Scene>
    • <Room>
    • <AltHeader>
    • <Animation>
    • <PlayerAnimation>
    • <CurveAnimation>
    • <LegacyAnimation>
    • <Skeleton>
    • <LimbTable>
    • <Limb>
    • <Symbol>
    • <Collision>
    • <Scalar>
    • <Vector>
    • <Vtx>
    • <Mtx>
    • <Cutscene>
    • <Array>
    • <Path>
    • <PlayerAnimationData>
  • A <File> cannot descend from a <File>.

  • All resources must be children of a <File>.

  • <Array> is the only paired resource tag enclosing an element; the element must be a single resource tag, one of

    • <Scalar>
    • <Vector>
    • <Vtx>