Midweek Editor Schedule – Personal Copies

Several years ago (literally) a feature request was discussed on Mantis BT. I have at long last spent some time on implementing it!

In version 18.1.5 of Meeting Schedule Assistant you will see a new item added to the File menu:

(Click to enlarge)

This new menu item is only enabled when you are using the Workbook view in the editor. Clicking Print Preview – Personal Copies will display this popup window:

(Click to enlarge)

A help topic has been provided with the updated program about using this feature. In summary:

  • Use the Display options to limit the publishers shown in the list.
  • Use the Select options to quickly select all the publishers that meet the given criteria.
  • You can also manually use CTRL + Left Mouse Click to select multiple entries.
  • Select the Style (there is one installed by default).
  • Press Print Preview to close the window and display the preview.

Additional Information

As mentioned above, the updated application includes a modified schedule script Workbook-S-140-Personal. It is based on the existing Workbook-S-140 document and was adapted to facilitate the new requirements. Here is a copy of that script, with the amended items highlighted. This may be of use to you if you are using your own S-140 scripts and want to make a Personal version.

<?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:template match="/">
    <html xmlns="http://www.w3.org/1999/xhtml">
      <xsl:attribute name="lang">
        <xsl:value-of select="//Settings//LanguageCode"/>
      </xsl:attribute>
      <xsl:attribute name="dir">
        <xsl:value-of select="//Settings/Direction"/>
      </xsl:attribute>
      <head>
        <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
        <link rel="stylesheet" type="text/css" href="Workbook-S-140-Personal.css"/>
        <title>
          <xsl:value-of select="//Labels/Congregation"/> <xsl:value-of select="//Labels/Title" />
        </title>
      </head>
      <body>
        <xsl:for-each select="//NamesToHighlight/Name">
          <xsl:variable name="NameToHighlight" select="."/>
          <div class="containerPage">
            <xsl:for-each select="//MeetingWorkBook/Meeting">
              <div class="containerMeeting">
                <xsl:if test="@PageBreak=1">
                  <br style="page-break-before: always;"/>
                </xsl:if>
                <xsl:if test="@PageBreak=1 or position()=1">
                  <xsl:call-template name="HEADING"/>
                </xsl:if>
                <xsl:if test="@BookmarkId">
                  <a>
                    <xsl:attribute name="name">
                      <xsl:value-of select="concat('week', @BookmarkId)"/>
                    </xsl:attribute>
                    <![CDATA[ ]]>
                  </a>
                </xsl:if>
                <xsl:call-template name="WEEK">
                  <xsl:with-param name="NameToHighlight" select="$NameToHighlight"/>
                </xsl:call-template>
 
                <xsl:apply-templates select="TFGW">                  
                  <xsl:with-param name="NameToHighlight" select="$NameToHighlight"/>
                </xsl:apply-templates>
                <xsl:apply-templates select="AYFM">
                  <xsl:with-param name="NameToHighlight" select="$NameToHighlight"/>
                </xsl:apply-templates>
                <xsl:apply-templates select="LAC">
                  <xsl:with-param name="NameToHighlight" select="$NameToHighlight"/>
                </xsl:apply-templates>
              </div>
            </xsl:for-each>
            <xsl:if test="not(position() = last())" >
              <br style="page-break-before: always;"/>
            </xsl:if>
          </div>
        </xsl:for-each>
      </body>
    </html>
  </xsl:template>
 
  <xsl:template name="WEEK">
    <xsl:param name ="NameToHighlight"/>
    <table class="tableDATE" cellspacing="0" cellpadding="0">
      <xsl:call-template name="SetColumnWidths"/>
      <xsl:if test="@SpecialEvent=1">
        <tr>
          <td class="cellBibleReading" colspan="4">
            <xsl:value-of select="Date"/> | <xsl:value-of select="WeeklyBibleReading"/>
          </td>
        </tr>
        <xsl:apply-templates select="SpecialEvent"/>
      </xsl:if>
      <xsl:if test="@SpecialEvent=0">
        <tr>
          <td class="cellBibleReading" colspan="3">
            <div class="floatRight">
              <xsl:value-of select="//Labels/Chairman"/>
              <xsl:if test="@NumberClasses = 2">
                <br/>
                <xsl:value-of select="//Labels/AuxCounsellor"/>
              </xsl:if>
              <xsl:if test="@NumberClasses = 3">
                <br/>
                <xsl:value-of select="//Labels/AuxCounsellor1"/>
                <br/>
                <xsl:value-of select="//Labels/AuxCounsellor2"/>
              </xsl:if>
            </div>
            <xsl:value-of select="Date"/> | <xsl:value-of select="WeeklyBibleReading"/>
          </td>
          <td class="cellName">
            <xsl:choose>
              <xsl:when test="Chairman/@Duplicate=1">
                <span class="textDuplicate">
                  <xsl:value-of select="Chairman"/> 
                </span>
              </xsl:when>
              <xsl:when test="Chairman=$NameToHighlight">
                <span class="textHighlight">
                  <xsl:value-of select="Chairman"/> 
                </span>
              </xsl:when>
              <xsl:otherwise>
                <xsl:value-of select="Chairman"/> 
              </xsl:otherwise>
            </xsl:choose>
            <xsl:if test="@NumberClasses >= 2">
              <br/>
              <xsl:choose>
                <xsl:when test="AuxCounsellor1/@Duplicate=1">
                  <span class="textDuplicate">
                    <xsl:value-of select="AuxCounsellor1"/> 
                  </span>
                </xsl:when>
                <xsl:when test="AuxCounsellor1=$NameToHighlight">
                  <span class="textHighlight">
                    <xsl:value-of select="AuxCounsellor1"/> 
                  </span>
                </xsl:when>
                <xsl:otherwise>
                  <xsl:value-of select="AuxCounsellor1"/> 
                </xsl:otherwise>
              </xsl:choose>
            </xsl:if>
            <xsl:if test="@NumberClasses = 3">
              <br/>
              <xsl:choose>
                <xsl:when test="AuxCounsellor2/@Duplicate=1">
                  <span class="textDuplicate">
                    <xsl:value-of select="AuxCounsellor2"/> 
                  </span>
                </xsl:when>
                <xsl:when test="AuxCounsellor2=$NameToHighlight">
                  <span class="textHighlight">
                    <xsl:value-of select="AuxCounsellor2"/> 
                  </span>
                </xsl:when>
                <xsl:otherwise>
                  <xsl:value-of select="AuxCounsellor2"/> 
                </xsl:otherwise>
              </xsl:choose>
            </xsl:if>
          </td>
        </tr>
        <xsl:apply-templates select="Note"/>
        <tr>
          <td colspan="4"> </td>
        </tr>
        <tr>
          <xsl:apply-templates select="SongOpen" />
          <xsl:apply-templates select="PrayerOpen">
            <xsl:with-param name="NameToHighlight" select="$NameToHighlight"/>
          </xsl:apply-templates>
        </tr>
        <xsl:apply-templates select="OpeningComments" />
      </xsl:if>
    </table>
  </xsl:template>
 
  <!--Displays the notes (if any)-->
  <xsl:template match="Note">
    <xsl:if test="normalize-space(.) != ''">
      <tr>
        <td class="cellNotes" colspan="4">
          <xsl:value-of select="//Labels/Note"/>: <xsl:value-of select="."/>
        </td>
      </tr>
    </xsl:if>
  </xsl:template>
 
  <xsl:template match="SpecialEvent">
    <tr>
      <td class="textSpecialEvent" colspan="4">
        <xsl:value-of select="Event"/> [<xsl:value-of select="Date"/>]
      </td>
    </tr>
    <xsl:if test="normalize-space(Location) != ''">
      <tr>
        <td class="textSpecialEventLocation" colspan="4">
          <xsl:value-of select="Location"/>
        </td>
      </tr>
    </xsl:if>
  </xsl:template>
 
  <!--Displays heading with a nice double underline-->
  <xsl:template name="HEADING">
    <div class="borderHEADINGOuter">
      <div class="borderHEADINGInner">
        <table class="tableHEADING">
          <tr>
            <td class="textCongregation">
              <xsl:value-of select="//Labels/Congregation"/>
            </td>
            <td class="textTitle">
              <xsl:value-of select="//Labels/Title"/>
            </td>
          </tr>
        </table>
      </div>
    </div>
  </xsl:template>
 
  <!--Display the end time (using 24 hour format)-->
  <xsl:template match="Time" mode="End">
    <td class="cellTime">
      <xsl:value-of select="@EndTime24"/>
    </td>
  </xsl:template>
 
  <!--Display the start time (using 24 hour format)-->
  <xsl:template match="Time" mode="Start">
    <td class="cellTime">
      <xsl:value-of select="@StartTime24"/>
    </td>
  </xsl:template>
 
  <!--Displays the duration of the item in minutes-->
  <xsl:template match="Time" mode="Duration">
    <span class="textDuration">
      (<xsl:value-of select="."/>)
    </span>
  </xsl:template>
 
  <!--Display the name of the brother assigned-->
  <xsl:template match="Name | PrayerOpen | PrayerEnd">
    <xsl:param name="NameToHighlight"/>
    <td class="cellName">
      <xsl:choose>
        <xsl:when test="@Duplicate=1">
          <span class="textDuplicate">
            <xsl:value-of select="."/>
          </span>
        </xsl:when>
        <xsl:when test=".=$NameToHighlight">
          <span class="textHighlight">
            <xsl:value-of select="."/> 
          </span>
        </xsl:when>
        <xsl:otherwise>
          <xsl:value-of select="."/>
        </xsl:otherwise>
      </xsl:choose>
    </td>
  </xsl:template>
 
  <!--Displays the theme for the assignment-->
  <xsl:template match="Theme">
    <span class="textTheme">
      <xsl:value-of select="." disable-output-escaping="yes"/>
    </span>
  </xsl:template>
 
  <!--Displays the chairman label-->
  <xsl:template name="Chairman">
    <td class="cellName">
      <!--Trims the " :" from the end of the chairman label-->
      <xsl:value-of select="normalize-space(translate(//Labels/Chairman,':',''))"/>
    </td>
  </xsl:template>
 
  <xsl:template match="Method">
    <span class="textMethod">
      <xsl:value-of select="." disable-output-escaping="yes"/>
    </span>
  </xsl:template>
 
  <!--Treasures From God's Word-->
  <xsl:template match="TFGW">
    <xsl:param name="NameToHighlight"/>
    <table class="tableTFGW" cellspacing="0" cellpadding="0">
      <xsl:call-template name="SetColumnWidths"/>
 
      <xsl:call-template name="SectionHeading">
        <xsl:with-param name="strSection">TFGW</xsl:with-param>
        <xsl:with-param name="iSpanColumns">3</xsl:with-param>
      </xsl:call-template>
 
      <xsl:apply-templates select="TFGWItem">
        <xsl:with-param name="NameToHighlight" select="$NameToHighlight"/>
        <xsl:with-param name="iSpanCols">
          <xsl:value-of select="@NumberClasses"/>
        </xsl:with-param>
      </xsl:apply-templates>
      <xsl:apply-templates select="BibleReadingItem">
        <xsl:with-param name="NameToHighlight" select="$NameToHighlight"/>
      </xsl:apply-templates>
    </table>
  </xsl:template>
 
  <!--Bible talk and Digging for Spiritual Gems-->
  <xsl:template match="TFGWItem">
    <xsl:param name="NameToHighlight"/>
    <xsl:param name="iSpanCols"/>
    <tr>
      <xsl:apply-templates select="Time" mode="End"/>
      <td colspan="{$iSpanCols+1}">
        <span class="bulletTFGW">•</span>
        <xsl:apply-templates select="Theme"/>
        <xsl:apply-templates select="Time" mode="Duration"/>
        <xsl:apply-templates select="Method"/>
      </td>
      <xsl:apply-templates select="Name">
        <xsl:with-param name="NameToHighlight" select="$NameToHighlight"/>
      </xsl:apply-templates>
    </tr>
  </xsl:template>
 
  <!--Displays all of the bible reading students for each class-->
  <xsl:template match="BibleReadingItem">
    <xsl:param name="NameToHighlight"/>
    <tr>
      <xsl:apply-templates select="Time" mode="End"/>
      <td class="cellTheme">
        <span class="bulletTFGW">•</span>
        <span class="textTheme">
          <xsl:value-of select="Type"/>
        </span>
        <xsl:apply-templates select="Time" mode="Duration"/>
        <xsl:apply-templates select="Material"/>
      </td>
      <td class="cellPosition">
        <xsl:value-of select="//Labels/Student"/>
      </td>
      <xsl:for-each select="Readers/Reader">
        <td class="cellName">
          <xsl:choose>
            <xsl:when test="@Duplicate=1">
              <span class="textDuplicate">
                <xsl:value-of select="."/>
              </span>
            </xsl:when>
            <xsl:when test=".=$NameToHighlight">
              <span class="textHighlight">
                <xsl:value-of select="."/>
              </span>
            </xsl:when>
            <xsl:otherwise>
              <xsl:value-of select="."/>
            </xsl:otherwise>
          </xsl:choose>
        </td>
      </xsl:for-each>
    </tr>
  </xsl:template>
 
  <!--Apply Yourself To The Field Ministry-->
  <xsl:template match="AYFM">
    <xsl:param name ="NameToHighlight"/>
    <table class="tableAYFM" cellspacing="0" cellpadding="0">
      <xsl:call-template name="SetColumnWidths"/>
 
      <xsl:call-template name="SectionHeading">
        <xsl:with-param name="strSection">AYFM</xsl:with-param>
        <xsl:with-param name="iSpanColumns">3</xsl:with-param>
      </xsl:call-template>
 
      <xsl:apply-templates select="Presentations" />
      <xsl:apply-templates select="StudentItem">
        <xsl:with-param name="NameToHighlight" select="$NameToHighlight"/>
      </xsl:apply-templates>
    </table>
  </xsl:template>
 
 
  <!--Displays all the information for a student item.
 This includes all the students from each class.-->
  <xsl:template match="StudentItem">
    <xsl:param name="NameToHighlight"/>
    <tr>
      <xsl:apply-templates select="Time" mode="End"/>
      <td class="cellTheme">
        <span class="bulletAYFM">•</span>
        <span class="textTheme">
          <xsl:value-of select="Type"/>
        </span>
        <xsl:apply-templates select="Time" mode="Duration"/>
        <xsl:apply-templates select="Material"/>
      </td>
      <td class="cellPosition">
        <xsl:choose>
          <xsl:when test="@IsSampleVideo=1">
            <!--We need an empty cell-->
            <xsl:text> </xsl:text>
          </xsl:when>
          <xsl:otherwise>
            <xsl:value-of select="//Labels/Student"/>
            <xsl:if test="@IsTalk=0">
              <br/>
              <xsl:value-of select="//Labels/Assistant"/>
            </xsl:if>
          </xsl:otherwise>
        </xsl:choose>
      </td>
      <xsl:apply-templates select="Students">
        <xsl:with-param name="NameToHighlight" select="$NameToHighlight"/>
      </xsl:apply-templates>
    </tr>
  </xsl:template>
 
  <xsl:template match="Material | SourceMaterial">
    <span class="textMaterial">
      <xsl:value-of select="." disable-output-escaping="yes"/>
    </span>
  </xsl:template>
 
  <!--Displays the student and assistant for the current student item-->
  <xsl:template match="Students">
    <xsl:param name="NameToHighlight"/>
    <td class="cellName">
      <xsl:choose>
        <xsl:when test="../@IsSampleVideo=1">
          <xsl:choose>
            <xsl:when test="@ChairmanHandleSampleVideo=0">
              <xsl:value-of select="//Labels/Counsellor"/>
            </xsl:when>
            <xsl:otherwise>
              <!--Trims the " :" from the end of the chairman label-->
              <xsl:value-of select="normalize-space(translate(//Labels/Chairman,':',''))"/>
            </xsl:otherwise>
          </xsl:choose>
        </xsl:when>
        <xsl:otherwise>
          <xsl:choose>
            <xsl:when test="Student/@Duplicate=1">
              <span class="textDuplicate">
                <xsl:value-of select="Student"/>
              </span>
            </xsl:when>
            <xsl:when test="Student=$NameToHighlight">
              <span class="textHighlight">
                <xsl:value-of select="Student"/>
              </span>
            </xsl:when>
            <xsl:otherwise>
              <xsl:value-of select="Student"/>
            </xsl:otherwise>
          </xsl:choose>
          <xsl:if test="../@IsTalk=0">
            <br/>
            <xsl:choose>
              <xsl:when test="Assistant/@Duplicate=1">
                <span class="textDuplicate">
                  <xsl:value-of select="Assistant"/>
                </span>
              </xsl:when>
              <xsl:when test="Assistant=$NameToHighlight">
                <span class="textHighlight">
                  <xsl:value-of select="Assistant"/>
                </span>
              </xsl:when>
              <xsl:otherwise>
                <xsl:value-of select="Assistant"/>
              </xsl:otherwise>
            </xsl:choose>
          </xsl:if>
        </xsl:otherwise>
      </xsl:choose>
    </td>
  </xsl:template>
 
  <!--First week of month item-->
  <xsl:template match="Presentations">
    <tr>
      <xsl:apply-templates select="Time" mode="End"/>
      <td colspan="2">
        <span class="bulletAYFM">•</span>
        <xsl:apply-templates select="Theme"/>
        <xsl:apply-templates select="Time" mode="Duration"/>
        <xsl:apply-templates select="Method"/>
      </td>
      <xsl:apply-templates select="Name"/>
    </tr>
  </xsl:template>
 
  <!--Define the column widths for the schedule-->
  <xsl:template name="SetColumnWidths">
    <!--The widths in the column classes will add up to 100%-->
    <xsl:choose>
      <xsl:when test="not(@NumberClasses) or @NumberClasses=1 or self::Meeting">
        <colgroup>
          <col class="columnTime"/>
          <col class="columnTheme1ClassB"/>
          <col class="columnPosition"/>
          <col class="columnName"/>
        </colgroup>
      </xsl:when>
      <xsl:when test="@NumberClasses=2">
        <colgroup>
          <col class="columnTime"/>
          <col class="columnTheme2ClassB"/>
          <col class="columnPosition"/>
          <col class="columnName"/>
          <col class="columnName"/>
        </colgroup>
      </xsl:when>
      <xsl:when test="@NumberClasses=3">
        <colgroup>
          <col class="columnTime"/>
          <col class="columnTheme3ClassB"/>
          <col class="columnPosition"/>
          <col class="columnName"/>
          <col class="columnName"/>
          <col class="columnName"/>
        </colgroup>
      </xsl:when>
    </xsl:choose>
  </xsl:template>
 
  <!--Living As Christians-->
  <xsl:template match="LAC">
    <xsl:param name ="NameToHighlight"/>
    <table class="tableLAC" cellspacing="0" cellpadding="0">
      <xsl:call-template name="SetColumnWidths"/>
 
      <xsl:call-template name="SectionHeading">
        <xsl:with-param name="strSection">LAC</xsl:with-param>
        <xsl:with-param name="iSpanColumns">4</xsl:with-param>
      </xsl:call-template>
 
      <tr>
        <xsl:apply-templates select="SongMiddle" />
      </tr>
      <xsl:apply-templates select="LACItem">
        <xsl:with-param name="NameToHighlight" select="$NameToHighlight"/>
      </xsl:apply-templates>
 
      <xsl:choose>
        <xsl:when test="@CircuitVisit=0">
          <xsl:apply-templates select="CongregationBibleStudy">
            <xsl:with-param name="NameToHighlight" select="$NameToHighlight"/>
          </xsl:apply-templates>
          <xsl:apply-templates select="ClosingComments"/>
        </xsl:when>
        <xsl:otherwise>
          <xsl:apply-templates select="ClosingComments"/>
          <xsl:apply-templates select="CircuitVisit/LACItem">
            <xsl:with-param name="NameToHighlight" select="$NameToHighlight"/>
          </xsl:apply-templates>
        </xsl:otherwise>
      </xsl:choose>
 
      <tr>
        <xsl:apply-templates select="SongEnd"/>
        <xsl:apply-templates select="PrayerEnd">
          <xsl:with-param name="NameToHighlight" select="$NameToHighlight"/>
        </xsl:apply-templates>
      </tr>
    </table>
  </xsl:template>
 
  <xsl:template name="SectionHeading">
    <xsl:param name="strSection"/>
    <xsl:param name="iSpanColumns"/>
    <tr>
      <td class="cell{$strSection}" colspan="{$iSpanColumns}">
        <div class="text{$strSection}">
          <xsl:value-of select="//Labels/*[name() = $strSection]"/>
        </div>
      </td>
      <xsl:if test="@NumberClasses = 3">
        <td class="cellClass">
          <xsl:value-of select="//Labels/AuxClass1"/>
        </td>
        <td class="cellClass">
          <xsl:value-of select="//Labels/AuxClass2"/>
        </td>
      </xsl:if>
      <xsl:if test="@NumberClasses = 2">
        <td class="cellClass">
          <xsl:value-of select="//Labels/AuxClass"/>
        </td>
      </xsl:if>
      <xsl:if test="@NumberClasses >= 1">
        <td class="cellClass">
          <xsl:value-of select ="//Labels/MainHall"/>
        </td>
      </xsl:if>
    </tr>
  </xsl:template>
 
  <xsl:template match="LACItem">
    <xsl:param name ="NameToHighlight"/>
    <tr>
      <xsl:apply-templates select="Time" mode="End"/>
      <td class="cellTheme" colspan="2">
        <span class="bulletLAC">•</span>
        <xsl:apply-templates select="Theme"/>
        <xsl:apply-templates select="Time" mode="Duration"/>
        <xsl:apply-templates select="Method"/>
      </td>
      <xsl:apply-templates select="Name">
        <xsl:with-param name="NameToHighlight" select="$NameToHighlight"/>
      </xsl:apply-templates>
    </tr>
  </xsl:template>
 
  <!--Displays the congregation bible study information-->
  <xsl:template match="CongregationBibleStudy">
    <xsl:param name ="NameToHighlight"/>
    <tr>
      <xsl:apply-templates select="Time" mode="End"/>
      <td class="cellTheme">
        <span class="bulletLAC">•</span>
        <span class="textTheme">
          <xsl:value-of select="//Labels/CBS"/>
        </span>
        <xsl:apply-templates select="Time" mode="Duration"/>
        <xsl:apply-templates select="SourceMaterial" />
      </td>
      <td class="cellPosition">
        <xsl:value-of select="//Labels/Conductor"/>
        <br/>
        <xsl:value-of select="//Labels/Reader"/>
      </td>
      <td class="cellName">
        <xsl:choose>
          <xsl:when test="Conductor/@Duplicate=1">
            <span class="textDuplicate">
              <xsl:value-of select="Conductor"/>
            </span>
          </xsl:when>
          <xsl:when test="Conductor=$NameToHighlight">
            <span class="textHighlight">
              <xsl:value-of select="Conductor"/>
            </span>
          </xsl:when>
          <xsl:otherwise>
            <xsl:value-of select="Conductor"/>
          </xsl:otherwise>
        </xsl:choose>
        <br/>
        <xsl:choose>
          <xsl:when test="Reader/@Duplicate=1">
            <span class="textDuplicate">
              <xsl:value-of select="Reader"/>
            </span>
          </xsl:when>
          <xsl:when test="Reader=$NameToHighlight">
            <span class="textHighlight">
              <xsl:value-of select="Reader"/>
            </span>
          </xsl:when>
          <xsl:otherwise>
            <xsl:value-of select="Reader"/>
          </xsl:otherwise>
        </xsl:choose>
      </td>
    </tr>
  </xsl:template>
 
  <!--Displays the song information-->
  <xsl:template match="SongOpen | SongMiddle | SongEnd">
    <td class="cellTime">
      <xsl:value-of select="@EndTime24"/>
    </td>
    <td class="cellTheme">
      <xsl:if test="self::SongMiddle">
        <xsl:attribute name="colspan">3</xsl:attribute>
        <xsl:attribute name="class"></xsl:attribute>
      </xsl:if>
      <span>
        <xsl:attribute name="class">
          <xsl:choose>
            <xsl:when test="self::SongOpen">bulletTFGW</xsl:when>
            <xsl:otherwise>bulletLAC</xsl:otherwise>
          </xsl:choose>
        </xsl:attribute>
        <xsl:text>•</xsl:text>
      </span>
      <span class="textSongLabel">
        <xsl:value-of select="//Labels/Song"/>
      </span>
      <span class="textSongNumber">
        <xsl:value-of select="."/>
      </span>
      <span class="textSongTitle">
        <xsl:value-of select="@Title"/>
      </span>
    </td>
    <xsl:if test="self::SongOpen or self::SongEnd">
      <td class="cellPosition">
        <xsl:value-of select="//Labels/Prayer"/>
      </td>
    </xsl:if>
  </xsl:template>
 
  <!--Displays the comments-->
  <xsl:template name="Comments">
    <xsl:param name="bulletClass" />
    <tr>
      <xsl:apply-templates select="Time" mode="End"/>
      <td class="cellTheme" colspan="2">
        <span class="{ $bulletClass }">•</span>
        <xsl:apply-templates select="Theme"/>
        <xsl:apply-templates select="Time" mode="Duration"/>
      </td>
      <xsl:call-template name="Chairman"/>
    </tr>
  </xsl:template>
 
  <xsl:template match="OpeningComments">
    <xsl:call-template name="Comments">
      <xsl:with-param name="bulletClass">bulletTFGW</xsl:with-param>
    </xsl:call-template>
  </xsl:template>
 
  <xsl:template match="ClosingComments">
    <xsl:call-template name="Comments">
      <xsl:with-param name="bulletClass">bulletLAC</xsl:with-param>
    </xsl:call-template>
  </xsl:template>
 
  <xsl:template match="PUBLICTALK">
    <table class="tableWeekend">
      <tr>
        <td class ="cellWEEKEND" colspan="2">
          <div class="textWEEKEND" style="float:left">
            <xsl:value-of select="//Labels/PTS_WeekendMeeting"/>
          </div>
          <div style="float:right">
            <span class="textPTSLabel">
              <xsl:value-of select="//Labels/PTS_Chairman"/>:
            </span>
             <span class="textPTSValue">
              <xsl:value-of select="Assignments/Chairman"/>
            </span>
          </div>
        </td>
      </tr>
      <xsl:apply-templates select="HomeTalk"/>
      <xsl:apply-templates select="AwayTalk"/>
      <xsl:apply-templates select="Assignments"/>
    </table>
  </xsl:template>
 
  <!--Displays the home talk speaker details-->
  <xsl:template match="HomeTalk">
    <tr>
      <td class="cellWEEKENDText">
        <span class="textPTSLabel">
          <xsl:value-of select="//Labels/PTS_Speaker"/>:
        </span>
         <span class="textPTSValue">
          <xsl:value-of select="Speaker"/>
        </span>
      </td>
      <td>
        <span class="textPTSLabel">
          <xsl:value-of select="//Labels/PTS_Congregation"/>:
        </span>
         <span class="textPTSValue">
          <xsl:value-of select="Congregation"/>
        </span>
      </td>
    </tr>
    <tr>
      <td class="cellWEEKENDText" colspan="2">
        <span class="textPTSLabel">
          <xsl:value-of select="//Labels/PTS_Theme"/>:
        </span>
         <span class="textPTSValue">
          <xsl:value-of select="Theme"/>
        </span>
      </td>
    </tr>
  </xsl:template>
 
  <xsl:template match="AwayTalk">
    <tr>
      <td class="cellWEEKENDText" colspan="2">
        <span class="textPTSLabel">
          <xsl:choose>
            <!--We only support 2 away speakers. We could just use one label-->
            <xsl:when test="position()=1">
              <xsl:value-of select="//Labels/PTS_AwaySpeaker1"/>:
            </xsl:when>
            <xsl:otherwise>
              <xsl:value-of select="//Labels/PTS_AwaySpeaker2"/>:
            </xsl:otherwise>
          </xsl:choose>
        </span>
         <span class="textPTSValue">
          <xsl:value-of select="Speaker"/> (<xsl:value-of select="Congregation"/>)
        </span>
      </td>
    </tr>
  </xsl:template>
 
  <!--Displays the Watchtower conductor and reader-->
  <xsl:template match="Assignments">
    <tr>
      <td class="cellWEEKENDText">
        <span class="textPTSLabel">
          <xsl:value-of select="//Labels/PTS_WTConductor"/>:
        </span>
         <span class="textPTSValue">
          <xsl:value-of select="Conductor"/>
        </span>
      </td>
      <td>
        <span class="textPTSLabel">
          <xsl:value-of select="//Labels/PTS_WTReader"/>:
        </span>
         <span class="textPTSValue">
          <xsl:value-of select="Reader"/>
        </span>
      </td>
    </tr>
  </xsl:template>
</xsl:stylesheet>

The application also installs an updated CSS document:

/* Column widths */
.columnTime {
    width: 7%;
}
.columnTheme1Class {
    width: 66%;
}
.columnTheme2Classes {
    width: 54%;
}
.columnTheme3Classes {
    width: 42%;
}
.columnPosition {
    width: 10%;
}
.columnName {
    width: 17%;
}
table {
    border-collapse: collapse;
    table-layout: fixed;
    width: 100%;
}
table th, td {
    /* Comment out the following line if you do not want borders */
    border: 1px #d3d3d3 solid;
    /* This is the default font for all cells */
    font-family: Calibri;
}
table tbody tr:hover td {
    color: #000;
    background: #efefef;
}
body {
    width: 100%;
    margin-left: 0;
    margin-right: 0;
    background: #666;
}
.containerPage {
    min-width: 210mm;
    max-width: 210mm;
    padding-left: 2mm;
    padding-right: 2mm;
    margin-left: auto;
    margin-right: auto;
    background: #FFF;
}
.containerMeeting {
    margin-bottom: 3mm;
}
.cellBibleReading {
    padding-left: 3mm;
    font-size: 11pt;
    font-weight: 700;
    text-transform: uppercase;
    border-right-style: none;
}
.cellNotes {
    font-size: 10pt;
    font-style: italic;
}
.cellTime {
    padding-left: 3mm;
    padding-right: 5mm;
    font-size: 9pt;
    font-weight: 700;
    color: gray;
}
.cellTheme {
    border-right-style: none;
}
.cellPosition {
    color: gray;
    padding-right: 2mm;
    text-align: right;
    font-size: 8pt;
    font-weight: 700;
    vertical-align: middle;
    text-transform: none;
    border-left-style: none;
}
.cellName {
    font-size: 10pt;
    font-weight: normal;
}
.floatRight {
    color: gray;
    padding-top: 1mm;
    padding-bottom: 1mm;
    padding-right: 2mm;
    float: right;
    text-align: right;
    font-size: 8pt;
    font-weight: 700;
    text-transform: none;
}
.borderHEADINGOuter {
    border-bottom: 1px gray solid;
    margin-bottom: 2mm;
}
.borderHEADINGInner {
    border-bottom: 4px gray solid;
    margin-bottom: 2px;
}
.tableHEADING {
    table-layout: auto;
    width: 100%;
    border: none;
}
.tableHEADING td {
    border: none;
}
.textSpecialEvent {
    text-align: center;
}
.textSpecialEventLocation {
    text-align: center;
}
.tableDATE {
    margin-bottom: 2mm;
}
.tableTFGW {
    margin-bottom: 2mm;
}
.cellTFGW {
    padding-left: 1mm;
}
.textTFGW {
    padding-left: 1mm;
    padding-top: 1mm;
    padding-bottom: 1mm;
    color: #fff;
    background-color: #606a70;
    width: 90mm;
    font-size: 10pt;
    font-weight: 700;
}
.bulletTFGW {
    /*padding-top: 1mm;
    padding-bottom: 1mm;*/
    padding-right: 1mm;
    color: #606a70;
    /*font-size: 14pt;*/
    font-weight: normal;
}
.tableAYFM {
    margin-bottom: 2mm;
}
.cellAYFM {
    padding-left: 1mm;
}
.textAYFM {
    padding-left: 1mm;
    padding-top: 1mm;
    padding-bottom: 1mm;
    color: #fff;
    background-color: #c18626;
    width: 90mm;
    font-size: 10pt;
    font-weight: 700;
}
.bulletAYFM {
    /*padding-top: 1mm;
    padding-bottom: 1mm;*/
    padding-right: 1mm;
    color: #c18626;
    /*font-size: 14pt;*/
    font-weight: normal;
}
.textHighlight {
    background-color: #ffff00;
}
.textDuplicate {
    background-color: #ff0000;
}
.textMaterial {
    /* Uncomment to hide the material */
    /* display:none;*/
    font-size: 10pt;
    font-style: italic;
    font-weight: 700;
}
.textMethod {
    /* Uncomment to hide the method */
    /* display:none;*/
    font-size: 10pt;
    font-style: italic;
    font-weight: 700;
}
.textSongTitle {
    /* Uncomment to hide the song title */
    /* display:none;*/
    font-size: 10pt;
    font-weight: 700;
}
.cellClass {
    font-size: 8pt;
    font-weight: 700;
    vertical-align: bottom;
    color: gray;
}
.tableLAC {
    margin-bottom: 2mm;
}
.cellLAC {
    padding-left: 1mm;
}
.textLAC {
    padding-left: 1mm;
    padding-top: 1mm;
    padding-bottom: 1mm;
    color: #fff;
    background-color: #961526;
    width: 90mm;
    font-size: 10pt;
    font-weight: 700;
}
.bulletLAC {
    /*padding-top: 1mm;
    padding-bottom: 1mm;*/
    padding-right: 1mm;
    color: #961526;
    /*font-size: 14pt;*/
    font-weight: normal;
}
.textDuration {
    padding-left: 1mm;
    font-family: Calibri;
    font-size: 9pt;
    font-weight: normal;
}
.textTheme {
    font-size: 10pt;
    font-weight: normal;
}
.textSongLabel {
    font-size: 10pt;
    font-weight: normal;
}
.textSongNumber {
    font-size: 10pt;
    font-weight: normal;
}
.textCongregation {
    vertical-align: bottom;
    text-align: left;
    font-size: 11pt;
    font-weight: 700;
    text-transform: uppercase;
}
.textTitle {
    vertical-align: bottom;
    text-align: right;
    font-family: Cambria;
    font-size: 18pt;
    font-weight: 700;
}
.tableWeekend {
    margin-bottom: 2mm;
}
.cellWEEKEND {
    padding-left: 1mm;
}
.textWEEKEND {
    padding-left: 1mm;
    padding-top: 1mm;
    padding-bottom: 1mm;
    color: #fff;
    background-color: #8b8378;
    width: 90mm;
    font-size: 10pt;
    font-weight: 700;
    text-transform: uppercase;
}
.cellWEEKENDText {
    padding-left: 3mm;
}
.textPTSLabel {
    font-weight: 700;
    font-size: 10pt;
}
.textPTSValue {
    font-size: 10pt;
}
/* For right-to-left: text directions swapped */
[dir=rtl] .textCongregation {
    text-align: right;
}
[dir=rtl] .textTitle {
    text-align: left;
}
@media print {
body {
    background: #FFF;
}
.containerPage, .containerMeeting, .tableDATE, .tableHEADING, .tableTFGW, .tableAYFM, .tableLAC, .tableWeekend {
    width: 99%;
    min-width: 99%;
    max-width: 99%;
    padding-left: 0;
    padding-right: 0;
    margin-left: auto;
    margin-right: auto;
}
}

At line 172 you will see a new class:

.textHighlight {
    background-color: #ffff00;
}

This class sets any assigned name with a YELLOW BACKGROUND.

1 Comment

  1. This new feature work well and is very useful.

Comments are closed.