Exercise 1.

  1. The root of the XML file is <TEI>
  2. The direct children of <text> are <front> and <body>.

Exercise 2.

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="collection"> <html>
<head></head>
<body>
<h2 align="center">
<xsl:value-of select="head"/>
</h2>

<p>
<xsl:text>From </xsl:text>
<xsl:value-of select="body/letter/author" />
<xsl:text> to </xsl:text>
<xsl:value-of select="body/letter/recipient" /><br/>
<xsl:value-of select="body/letter/place"/><br/>
<i>
<xsl:value-of select="body/letter/callnumber"/>
</i>
</p>

</body>
</html>
</xsl:template>

Exercise 3.

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="collection">
<html>
<head/>
<body>
<xsl:for-each select="body/letter">
<p>
<b>
<xsl:if test="author">
<xsl:text>From </xsl:text>
<xsl:value-of select="author"/>
</xsl:if>
<xsl:if test="author and recipient">
<xsl:text> to </xsl:text>
</xsl:if>
<xsl:if test="not(author) and recipient">
<xsl:text>To </xsl:text>
</xsl:if>
<xsl:if test="recipient">
<xsl:value-of select="recipient"/>
<br/>
</xsl:if>
</b>
<xsl:if test="place">
<xsl:value-of select="place"/>
<br/>
</xsl:if>
<xsl:if test="year">
<xsl:value-of select="year"/>
<br/>
</xsl:if>
<xsl:if test="callnumber">
<xsl:value-of select="callnumber"/>
<br/>
</xsl:if>
</p>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

Exercise 4.

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
          exclude-result-prefixes="xs"
          version="2.0">

          <xsl:template match="collection">


              <table>
                  <tr>

                      <td> <b>Sender</b></td>
                      <td> <b>Recipient</b></td>
                      <td> <b>Year</b></td>

                  </tr>


              <xsl:for-each select="body/letter">
              <tr>
                  <td>
             <xsl:value-of select="author"/>
                  </td>
                  <td>
                      <xsl:value-of select="recipient"/>
                  </td>
                  <td>
                      <xsl:value-of select="year"/>
                  </td>
              </tr>
              </xsl:for-each>
              </table>

          </xsl:template>

</xsl:stylesheet>

Exercise 5.

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    version="1.0">

      <xsl:template match="collection">

          <html>

              <head/>

              <body>
                  <p>
                      <ul>

                          <xsl:for-each select="body/letter">



                              <li>

                                  <xsl:if test="callnumber">
                                      <b>
                                          <xsl:value-of select="callnumber"/>
                                      </b>
                                      <br/>
                                  </xsl:if>

                                  <xsl:if test="place">
                                      <xsl:value-of select="place"/>
                                      <br/>
                                  </xsl:if>

                                  <xsl:if test="year">
                                      <xsl:value-of select="year"/>
                                      <br/>
                                  </xsl:if>

                                  <xsl:if test="year">
                                      <xsl:value-of select="language"/>
                                  </xsl:if>



                              </li>

                          </xsl:for-each>
                      </ul>

                  </p>
              </body>

          </html>

      </xsl:template>

</xsl:stylesheet>

Exercise 6.


<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    exclude-result-prefixes="xs"
    version="2.0">

        <xsl:template match="collection">
            
            <html>
                
                <head/>
                
                <body>
                    <ul>
                    <xsl:for-each select="body/letter">
                    
                        <li>
                            <text>Author: </text>
                            <xsl:value-of select="author"/>
                            <br/>
                            <text>Recipient: </text>
                            <xsl:value-of select="recipient"/>
                            <br/>
                            <xsl:if test="year">
                            <xsl:value-of select="year"/>
                            <br/>
                            </xsl:if>
                            <xsl:for-each select="annotations/note">
                                <xsl:value-of select="."/><br/>
                            </xsl:for-each>
                                </li>
                        
                            </xsl:for-each>
                    </ul>
                     
                            
                     
               
                </body>
                
            </html>
            
        </xsl:template>
        
    </xsl:stylesheet>
  

Exercise 7.


<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    exclude-result-prefixes="xs"
    version="2.0">

        <xsl:template match="collection">
            
            <html>
                
                <head/>
                
                <body>
                    <ul>
                    <xsl:for-each select="body/letter">
                       <xsl:if test="year &lt; 1900" >
                        <li>
                            <text>Author: </text>
                            <xsl:value-of select="author"/>
                            <br/>
                            <text>Recipient: </text>
                            <xsl:value-of select="recipient"/>
                            <br/>
                            <xsl:if test="year">
                            <xsl:value-of select="year"/>
                            <br/>
                            </xsl:if>
                            <xsl:for-each select="annotations/note">
                                <xsl:value-of select="."/><br/>
                            </xsl:for-each>
                                </li>
                            </xsl:if>
                        
                            </xsl:for-each>
                    </ul>
                     
                            
                     
               
                </body>
                
            </html>
            
        </xsl:template>
        
    </xsl:stylesheet>
  

Exercise 8.

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    exclude-result-prefixes="xs"
    version="2.0">
    
    <xsl:template match="collection">
        
        <html>
            
            <head/>
            
            <body>
                

                <p>
            <xsl:text>The collection contains </xsl:text>
      <xsl:value-of select="count( body/letter )"/>
                <xsl:text> letters.</xsl:text>
                </p>
           
                <p>
                 
                    <xsl:value-of select="count( body/letter[ year < 1900 ] )"/>
                    <xsl:text> of these have been written before 1900.</xsl:text>
                </p>
                
                <p>
                    <xsl:text>The collection contains </xsl:text>
                    <xsl:value-of select="count( body/letter[ language/@code = 'eng' ] )"/>
                    <xsl:text> letters in English.</xsl:text>
                </p>
           
            </body>
            
        </html>
        
    </xsl:template>
    
</xsl:stylesheet>