XSL Template Example

Presented here is a simple example to get your started. It shows the basic method of identifying and extracting data from an XML document containing a single struct.

Figure 1. An Example XSL Template
<?xml version="1.0" standalone="yes"?>
<xsl:stylesheet
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:fo="http://www.w3.org/1999/XSL/Format"
  version="1.0">

  <xsl:template match="DOCUMENT">
    <xsl:apply-templates select="DATA"/>
  </xsl:template>

  <xsl:template match="DATA">
    <xsl:apply-templates select="STRUCT[SNAME='DPTicketDtls']"/>
  </xsl:template>

  <xsl:template match="STRUCT">
    <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
      <fo:layout-master-set>
        <fo:simple-page-master page-master-name="only"
                   page-height="297mm" page-width="210mm"
                   margin-top="30mm" margin-bottom="30mm"
                   margin-left="30mm" margin-right="30mm">
          <fo:region-body/>
        </fo:simple-page-master>
      </fo:layout-master-set>

      <fo:page-sequence>
        <fo:sequence-specification>
           <fo:sequence-specifier-single
                           page-master-reference="only"/>
        </fo:sequence-specification>

        <fo:flow>
          <fo:block font-size="12pt" font-family="serif"
                    line-height="20mm">
            Ticket ID: <xsl:apply-templates
                           select="FIELD[FNAME='ticketID']"/>
          </fo:block>

          <fo:block font-size="12pt" font-family="serif"
                    line-height="20mm">
            Subject: <xsl:apply-templates
                          select="FIELD[FNAME='subject']"/>
          </fo:block>
        </fo:flow>
      </fo:page-sequence>
    </fo:root>
  </xsl:template>

  <xsl:template match="FIELD">
    <xsl:value-of select="VALUE"/>
  </xsl:template>

</xsl:stylesheet>

The output is formatted for A4 paper (210x297mm) with 30mm margins and should appear like this, if the earlier sample XML document is used:

Figure 2. Example output
Ticket ID: 12796

Subject: This is the subject.