Customising the Worksheet

Some brothers have said that they would like to display extra information on the Chairman’s Worksheet.

They cited as an example the Watchtower Online Library where in the Meetings section you can see everything pertaining to each assignment.

It is possible to achieve this with Meeting Schedule Assistant if you are willing to make the needed changes.

Note
The line numbers in the examples below are indicative only.

Step 1

The first thing you need to do is create a new XML data file. This will hold the additional information for each item. Here is an example:

<?xml version="1.0" encoding="utf-8"?>
<Meetings xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="https://www.publictalksoftware.co.uk/msa">
  <Meeting Week="W20190325">
    <Treasures1>
      <Note>1Co 5:1, 2​—The congregation in Corinth was tolerating an unrepentant wrongdoer</Note>
      <Note>1Co 5:5-8, 13​—Paul told the congregation to remove the “leaven” from their midst and hand the wrongdoer over to Satan (it-2 230, 869-870)</Note>
      <Note>1Co 5:9-11​—The congregation should not keep company with unrepentant wrongdoers (lvs 241, endnote “Disfellowshipping”)</Note>
    </Treasures1>
    <Treasures2>
      <Note>1Co 4:9​—How are God’s human servants “a theatrical spectacle” to angels? (w09 5/15 24 ¶16)</Note>
      <Note>1Co 6:3​—What was Paul evidently referring to when he wrote: “We will judge angels”? (it-2 211)</Note>
    </Treasures2>
    <Living Item="1">
      <Note>Play and discuss the video that shows a publisher using the video from lesson 4 of the Good News brochure to teach a Bible student.</Note>
    </Living> 
  </Meeting>
</Meetings>

I called the file OCLMInfo.XML and I saved it in the user application data folder. You would add new weeks to the file yourself and follow the same template.

Step 2

Now you need to make a copy of the Worksheet-Next Students 2019.XSL template and add a link to the new file:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" xmlns:msa="https://www.publictalksoftware.co.uk/msa">
  <xsl:output method="html" indent="yes" version="4.01"
    doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
    doctype-public="//W3C//DTD XHTML 1.0 Transitional//EN"/>
  <xsl:param name="CSSFile1"></xsl:param>
  
  <xsl:variable name="OCLMInfo" select="document('OCLMInfo.XML')"/>
  
  <xsl:template match="/">

Step 3

Next, add the following new template into the file:

<xsl:template match="msa:Note" mode="Info">
  <xsl:if test="position() != 1">
    <br style="line-height:2mm;" />
    <br style="line-height:2mm;" />
  </xsl:if>
  <xsl:value-of select="."/>
</xsl:template>

It is up to you to change how you want to display the new information. The above works for the users who requested this functionality.

Step 4

Now we need to get the script to display the extra Treasures From God’s Word details:

<!--Treasures from God's Word-->
<xsl:template name = "Display_TFGW" >
  <xsl:param name = "Class" />

  <xsl:variable name="Week" select="Date/@ThisWeek"/>
  <xsl:variable name="Info"
                     select="$OCLMInfo/msa:Meetings/msa:Meeting[@Week=$Week]"/>

  <div class="containerTFGW">
    <table cellpadding="2" cellspacing="0"  class="tableOuter">
      <tr>
        <td class="textTFGW" colspan="4">
          <xsl:value-of select="//Labels/TreasuresFromGodsWord"/>
        </td>
      </tr>

      <xsl:if test="$Class='M'">
        <!--Bible discussion-->
        <tr>
          <td class="borderDotTimeDuration">
            [<xsl:value-of select="Treasures1/Time/@EndTime24"/>]
          </td>
          <td class="borderDotTime">
            <xsl:value-of select="Treasures1/Time"/>
          </td>
          <td class="borderDotTheme">
            <xsl:value-of select="Treasures1/Theme" disable-output-escaping="yes"/> 
            <span class="textMethod">
              [<xsl:value-of select="Treasures1/Method" disable-output-escaping="yes"/>]
            </span>
          </td>
          <td class="borderDotName">
            <xsl:value-of select="Treasures1/Name"/> 
          </td>
        </tr>
        <tr>
          <td colspan="4" class="cellComments">
            <xsl:apply-templates select="$Info/msa:Treasures1/msa:Note" mode="Info"/>
          </td>
        </tr>

        <!--Digging for spiritual gems-->
        <tr>
          <td class="borderDotTimeDuration">
            [<xsl:value-of select="Treasures2/Time/@EndTime24"/>]
          </td>
          <td class="borderDotTime">
            <xsl:value-of select="Treasures2/Time"/>
          </td>
          <td class="borderDotTheme">
            <xsl:value-of select="Treasures2/Theme" disable-output-escaping="yes"/> 
            <span class="textMethod">
              [<xsl:value-of select="Treasures2/Method" disable-output-escaping="yes"/>]
            </span>
          </td>
          <td class="borderDotName" valign="top">
            <xsl:value-of select="Treasures2/Name"/> 
          </td>
        </tr>
        <tr>
          <td colspan="4" class="cellComments">
            <xsl:apply-templates select="$Info/msa:Treasures2/msa:Note" mode="Info"/>
          </td>
        </tr>
      </xsl:if>

      <!--Bible reading-->
      <tr>
        <td class="borderDotTimeDuration">
          [<xsl:value-of select="BibleReadingTime/@EndTime24"/>]
        </td>
        <td class="borderDotTime">
          <xsl:value-of select="BibleReadingTime"/>
        </td>
        <td class="borderDotTheme">
          <xsl:value-of select="//Labels/BibleReading"/> 
          <span class="textMaterial">
            <xsl:text>[</xsl:text>
            <xsl:value-of select="StudentSourceMaterial/BibleReadingMaterial"/>
            <xsl:text>]</xsl:text>
          </span>
          <br />
          <xsl:choose>
            <xsl:when test="$Class='M'">
              <xsl:apply-templates select="BibleReadingM"/>
            </xsl:when>
            <xsl:when test="$Class='1'">
              <xsl:apply-templates select="BibleReading1"/>
            </xsl:when>
            <xsl:when test="$Class='2'">
              <xsl:apply-templates select="BibleReading2"/>
            </xsl:when>
          </xsl:choose>
          <br />
        </td>
        <td class="borderDotName" valign="top">
          <xsl:choose>
            <xsl:when test="$Class='M'">
              <xsl:value-of select="BibleReadingM"/> 
            </xsl:when>
            <xsl:when test="$Class='1'">
              <xsl:value-of select="BibleReading1"/> 
            </xsl:when>
            <xsl:when test="$Class='2'">
              <xsl:value-of select="BibleReading2"/> 
            </xsl:when>
          </xsl:choose>
        </td>
      </tr>
      <tr>
        <td class="cellComments" colspan="4">
          <br />
          <br />
          <br />
        </td>
      </tr>
    </table>
  </div>
</xsl:template>

Step 5

Finally, we need to get the script to display the extra Living As Christians details:

<!--Living As Christians-->
<xsl:template name = "Display_LAC" >

  <xsl:variable name="Week" select="Date/@ThisWeek"/>
  <xsl:variable name="Info"
                     select="$OCLMInfo/msa:Meetings/msa:Meeting[@Week=$Week]"/>

  <div class="containerLAC">
    <table cellpadding="2" cellspacing="0"  class="tableOuter">
      <tr>
        <td class="textLAC" colspan="4">
          <xsl:value-of select="//Labels/LivingAsChristians"/>
        </td>
      </tr>
      <tr>
        <td class="borderDotTimeDuration">
          [<xsl:value-of select="SongMiddle/@EndTime24"/>]
        </td>
        <td class="borderDotTime">
          <xsl:value-of select="//Labels/SongDuration"/>
        </td>
        <td class="borderDotTheme" colspan="2">
          <xsl:value-of select="//Labels/Song"/> 
          <xsl:value-of select="SongMiddle"/> 
          <span class="textSongTitle">
            <xsl:value-of select="SongMiddle/@Title"/>
          </span>
        </td>
      </tr>
      <tr>
        <td class="borderDotTimeDuration">
          [<xsl:value-of select="LivingAsChristians/Item1/Time/@EndTime24"/>]
        </td>
        <td class="borderDotTime">
          <xsl:value-of select="LivingAsChristians/Item1/Time"/>
        </td>
        <td class="borderDotTheme">
          <xsl:value-of select="LivingAsChristians/Item1/Theme" disable-output-escaping="yes"/> 
          <span class="textMethod">
            [<xsl:value-of select="LivingAsChristians/Item1/Method" disable-output-escaping="yes"/>]
          </span>
          <xsl:call-template name="Display_DemoInfo">
            <xsl:with-param name="Item" select="LivingAsChristians/Item1"/>
          </xsl:call-template>
        </td>
        <td class="borderDotName">
          <xsl:value-of select="LivingAsChristians/Item1/Name"/> 
        </td>
      </tr>
      <tr>
        <td colspan="4" class="cellComments">
          <xsl:apply-templates select="$Info/msa:Living[@Item=1]/msa:Note" mode="Info"/>
        </td>
      </tr>
      <xsl:if test="LivingAsChristians/@ItemCount=2">
        <tr>
          <td class="borderDotTimeDuration">
            [<xsl:value-of select="LivingAsChristians/Item2/Time/@EndTime24"/>]
          </td>
          <td class="borderDotTime">
            <xsl:value-of select="LivingAsChristians/Item2/Time"/>
          </td>
          <td class="borderDotTheme">
            <xsl:value-of select="LivingAsChristians/Item2/Theme" disable-output-escaping="yes"/> 
            <span class="textMethod">
              [<xsl:value-of select="LivingAsChristians/Item2/Method" disable-output-escaping="yes"/>]
            </span>
            <xsl:call-template name="Display_DemoInfo">
              <xsl:with-param name="Item" select="LivingAsChristians/Item2"/>
            </xsl:call-template>
          </td>
          <td class="borderDotName">
            <xsl:value-of select="LivingAsChristians/Item2/Name"/> 
          </td>
        </tr>
        <tr>
          <td colspan="4" class="cellComments">
            <xsl:apply-templates select="$Info/msa:Living[@Item=2]/msa:Note" mode="Info"/>
          </td>
        </tr>
      </xsl:if>
      <xsl:choose>
        <!--We include the congregation bible study information and the review-->
        <xsl:when test="CircuitVisit=0">
          <tr>
            <td class="borderDotTimeDuration">
              [<xsl:value-of select="LivingAsChristians/CongregationBibleStudy/Time/@EndTime24"/>]
            </td>
            <td class="borderDotTime">
              <xsl:value-of select="LivingAsChristians/CongregationBibleStudy/Time"/>
            </td>
            <td class="borderDotTheme">
              <xsl:value-of select="//Labels/CongregationBibleStudy"/> 
              <span class="textCongregationBibleStudyMaterial">
                [<xsl:value-of select="LivingAsChristians/CongregationBibleStudy/SourceMaterial" disable-output-escaping="yes"/>]
              </span><br />
              <xsl:value-of select="//Labels/CBSReader"/>: <xsl:value-of select="LivingAsChristians/CongregationBibleStudy/Reader"/>
            </td>
            <td class="borderDotName">
              <xsl:value-of select="LivingAsChristians/CongregationBibleStudy/Conductor"/> 
            </td>
          </tr>
          <tr>
            <td class="borderDotTimeDuration">
              [<xsl:value-of select="ClosingComments/Time/@EndTime24"/>]
            </td>
            <td class="borderDotTime">
              <xsl:value-of select="ClosingComments/Time"/>
            </td>
            <td class="borderDotTheme" colspan="2">
              <xsl:value-of select="ClosingComments/Theme"/>
            </td>
          </tr>
          <tr>
            <td class="cellComments" colspan="4">
              <xsl:variable name="AssignHistory" select="document('AssignHistory.xml')"/>
              <xsl:variable name="week" select="Date/@NextWeek"/>
              <xsl:variable name="NextReviewQuestion" select="$AssignHistory/AssignmentHistory/*[name()=$week]/ReviewQuestion"/>
              <xsl:if test="normalize-space($NextReviewQuestion) != ''">
                <xsl:if test="normalize-space(ReviewQuestion) != ''">
                  <span class="textReviewQuestionLabel">
                    <xsl:value-of select="//Labels/NextReviewQuestion"/> 
                  </span>
                  <span class="textReviewQuestion">
                    <xsl:value-of select="$NextReviewQuestion"/>
                  </span>
                  <br />
                </xsl:if>
              </xsl:if>
              <br />
              <br />
              <br />
              <span style="font-size: 8pt;">
                <xsl:apply-templates select="$AssignHistory/AssignmentHistory/*[name()=$week]/StudentItems">
                  <xsl:with-param name="MainHall" select="//Labels/MainHall"/>
                  <xsl:with-param name="AuxClass1" select="//Labels/AuxClass1"/>
                  <xsl:with-param name="AuxClass2" select="//Labels/AuxClass2"/>
                </xsl:apply-templates>
              </span>
            </td>
          </tr>
        </xsl:when>
        <!--We include the review and the circuit overseer talk-->
        <xsl:otherwise>
          <tr>
            <td class="borderDotTimeDuration">
              [<xsl:value-of select="ClosingComments/Time/@EndTime24"/>]
            </td>
            <td class="borderDotTime">
              <xsl:value-of select="ClosingComments/Time"/>
            </td>
            <td class="borderDotTheme" colspan="2">
              <xsl:value-of select="ClosingComments/Theme"/>
            </td>
          </tr>
          <tr>
            <td class="cellComments" colspan="4">
              <xsl:variable name="AssignHistory" select="document('AssignHistory.xml')"/>
              <xsl:variable name="week" select="Date/@NextWeek"/>
              <xsl:variable name="NextReviewQuestion" select="$AssignHistory/AssignmentHistory/*[name()=$week]/ReviewQuestion"/>
              <xsl:if test="normalize-space($NextReviewQuestion) != ''">
                <span class="textReviewQuestionLabel">
                  <xsl:value-of select="//Labels/NextReviewQuestion"/> 
                </span>
                <span class="textReviewQuestion">
                  <xsl:value-of select="$NextReviewQuestion"/>
                </span>
                <br />
              </xsl:if>
              <br />
              <br />
              <br />
              <span style="font-size: 8pt;">
                <xsl:apply-templates select="$AssignHistory/AssignmentHistory/*[name()=$week]/StudentItems">
                  <xsl:with-param name="MainHall" select="//Labels/MainHall"/>
                  <xsl:with-param name="AuxClass1" select="//Labels/AuxClass1"/>
                  <xsl:with-param name="AuxClass2" select="//Labels/AuxClass2"/>
                </xsl:apply-templates>
              </span>
            </td>
          </tr>
          <tr>
            <td class="borderDotTimeDuration">
              [<xsl:value-of select="LivingAsChristians/ItemCircuitOverseer/Time/@EndTime24"/>]
            </td>
            <td class="borderDotTime">
              <xsl:value-of select="LivingAsChristians/ItemCircuitOverseer/Time"/>
            </td>
            <td class="borderDotTheme">
              <xsl:value-of select="LivingAsChristians/ItemCircuitOverseer/Theme" disable-output-escaping="yes"/> 
              <span class="textMethod">
                [<xsl:value-of select="LivingAsChristians/ItemCircuitOverseer/Method" disable-output-escaping="yes"/>]
              </span>
            </td>
            <td class="borderDotName">
              <xsl:value-of select="LivingAsChristians/ItemCircuitOverseer/Name"/> 
            </td>
          </tr>
        </xsl:otherwise>
      </xsl:choose>
      <tr>
        <td class="borderDotTimeDuration">
          [<xsl:value-of select="SongEnd/@EndTime24"/>]
        </td>
        <td class="borderDotTime">
          <xsl:value-of select="//Labels/SongDuration"/>
        </td>
        <td class="borderDotTheme">
          <span class="floatTextLeft">
            <xsl:value-of select="//Labels/Song"/> 
            <xsl:value-of select="SongEnd"/> 
            <span class="textSongTitle">
              <xsl:value-of select="SongEnd/@Title"/>
            </span>
          </span>
          <span class="floatTextRight">
            <xsl:value-of select="//Labels/Prayer"/>
          </span>
        </td>
        <td class="borderDotName">
          <xsl:value-of select="Prayer2"/> 
        </td>
      </tr>
    </table>
  </div>
</xsl:template>

As you can see, there are not many changes that are required. The result should be something like this:

Sample report with additional OCLM information
Sample Result