macro element

Type:Heading Tags
Attributes:
See:a body div macrolist p

A macro is a way of including a specific piece of XML multiple times in the same document. There is no equivalent in HTML.

Currently this is only used in one place - when a new page is created. A macro is defined in a macrolist element in the head of the document. Each macro is effectively a div, and must have an id, which is used to reference it in the body of the document. The content of the macro cannot be bare text, it must be an element like p or DIV.

The exact properties of the div depend on the type of macro - header, footer or background-macro - but you can rely on them having a width and height specified.

The following example shows a macro being defined and then assigned to the background-macro attribute of the body. This is followed by the equivalent XML without macros (assuming the document is only one page).

Here's an example using the "background-macro" attribute.

<head>
<macrolist>
  <macro id="watermark">
    <div align="center" valign="middle" rotate="-45" font-size="48pt">
      Confidential
    </div>
  </macro>
</macrolist>
</head>
<body background-macro="watermark">
  <p>The Document Body</p>
</body>

When the above macro is processed, internally it's turned into the following structure.

<body>
  <div width="100%" height="100%" position="absolute">
    <div align="center" valign="middle" rotate="-45" font-size="48pt">
      Confidential
    </div>
  </div>
  <p>The Document Body</p>
</body>

The footer and header macros are similar. Here's a simple footer example...

<head>
<macrolist>
  <macro id="myfooter">
    <div align="center" border-top="1" >
      Page &pagenumber;
    </div>
  </macro>
</macrolist>
</head>
<body width="8.5in" height="11in" footer="myfooter" footer-height="1in">
  <p>The Document Body</p>
</body>

...and here's how the document looks internally after it's been processed. Note the change in dimensions

<body width="8.5in" height="10in">

  <div width="100%" height="1in" position="absolute">
    <div align="center" border-top="1">
      Page <pagenumber/>
    </div>
  </div>

  <p>The Document Body</p>
</body>