xsl-list
[Top] [All Lists]

[xsl] gather all similar elements in different docs

2009-01-09 16:49:06
Hi, (using saxon9)

I have a few pages that each contain a table of definitions. The tables look like (they do not have a namespace):

  <table border="0" cellspacing="0">
      <tr>
         <td>
            <p>absenteeism</p>
         </td>
         <td>
            <p>frequent or habitual absence from school</p>
         </td>
      </tr>
....

Can I gather up all of the TR elements, like my defs variable below (or some other way) and apply-templates on them (while sorting)? The stylesheet below causes an error "Too many nested apply-templates calls. The stylesheet may be looping." at the <xsl:apply-templates select="$defs">

What am I doing wrong here?

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; version="2.0">

  <xsl:variable name="defs">
    <xsl:copy-of select="doc('lsb/content/glossary-1.1.1.xml')//tr"/>
<xsl:copy-of select="doc('lsb/content/modules-1-glossary.xml')// tr"/> <xsl:copy-of select="doc('lsb/content/modules-2-glossary.xml')// tr"/> <xsl:copy-of select="doc('lsb/content/modules-3-glossary.xml')// tr"/> <xsl:copy-of select="doc('lsb/content/modules-4-glossary.xml')// tr"/>
  </xsl:variable>

  <xsl:template match="/">
    <glossentries>
      <xsl:apply-templates select="$defs">
        <xsl:sort select="normalize-space(td[1]/p/text())"/>
      </xsl:apply-templates>
    </glossentries>
  </xsl:template>

  <xsl:template match="tr">
<xsl:variable name="term" select="normalize-space(td[1]/p/ text())"/> <xsl:variable name="file-name" select="translate($term, ' ', '-')"/>
    <glossentry file-name="{$file-name}">
      <term>
        <xsl:value-of select="$term"/>
      </term>
      <definition>
        <xsl:copy-of select="td[2]/*"/>
      </definition>
    </glossentry>
  </xsl:template>

</xsl:stylesheet>

thanks,
-Rob

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--

<Prev in Thread] Current Thread [Next in Thread>