[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: temp trees and context switching

Subject: Re: temp trees and context switching
From: Bruce D'Arcus <bdarcus@xxxxxxxxxxxxx>
Date: Sat, 13 Nov 2004 23:27:45 -0500
xsl template mode
On Nov 12, 2004, at 7:31 PM, Bruce D'Arcus wrote:

Below is my first few templates (I can't post the entire code), with source example below it. Am I doing something wrong with using the call-template below?

I'm not sure this is the best solution (any comments?), but I ended up adding another pass to the processing, since I couldn't get it work just using the call-template:


<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="2.0"
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  	xmlns:xs="http://www.w3.org/2001/XMLSchema"
	xmlns:db="http://docbook.org/docbook-ng"
  	xmlns:mods="http://www.loc.gov/mods/v3"
	xmlns:bib="http://xbiblio.sourceforge.net"
  	xmlns="http://docbook.org/docbook-ng"
	exclude-result-prefixes="mods bib db xs">

<!--
This driver file creates a temporary tree of the document for
subsequent processing. In the case of footnote class
citations, this means wrapping all citations in a footnote
element.
-->

<xsl:key name="citekey" match="db:biblioref/@linkend" use="'all'" />

<!-- first create a temporary tree that adds the raw bibliographic data based on citations -->
<xsl:template match="/">
<xsl:variable name="temp">
<xsl:apply-templates mode="create-bibcollection" />
</xsl:variable>
<xsl:apply-templates select="$temp" mode="step-2" />
</xsl:template>


  <xsl:template match="db:article" mode="create-bibcollection">
    <article>
      <xsl:apply-templates mode="create-bibcollection" />
    </article>
  </xsl:template>

  <xsl:template match="db:info" mode="create-bibcollection">
    <xsl:copy-of select="."/>
  </xsl:template>

  <xsl:template match="db:section" mode="create-bibcollection">
    <xsl:copy-of select="."/>
  </xsl:template>

<!-- next take that tree and create another temporary tree enhanced for subsequent processing -->
<xsl:template match="/" mode="step-2">
<xsl:variable name="temp">
<xsl:apply-templates mode="enhanced-bib" />
</xsl:variable>
<xsl:apply-templates select="$temp" mode="modified" />
</xsl:template>


  <xsl:template match="db:article" mode="enhanced-bib">
    <article>
      <xsl:apply-templates mode="enhanced-bib" />
    </article>
  </xsl:template>

  <xsl:template match="db:info" mode="enhanced-bib">
    <xsl:copy-of select="."/>
  </xsl:template>

<xsl:template match="db:section[$citation-class='author-year']" mode="enhanced-bib">
<xsl:copy-of select="."/>
</xsl:template>


<xsl:template match="db:bibliography" mode="create-bibcollection">
<bibliography>
<modsCollection xmlns="http://www.loc.gov/mods/v3">
<xsl:for-each select="distinct-values(key('citekey', 'all'))">
<xsl:variable name="bibrecord"
select="doc(concat('/Users/darcusb/Desktop/xbiblio-alt/samples/bib- data/', ., '.mods'))/mods:modsCollection/mods:mods"/>
<xsl:copy-of select="$bibrecord" />
</xsl:for-each>
</modsCollection>
</bibliography>
</xsl:template>


<xsl:template match="db:bibliography" mode="enhanced-bib">
<bibliography>
<xsl:apply-templates select="mods:modsCollection" mode="enhanced-bib"/>
</bibliography>
</xsl:template>


<xsl:template match="db:section[$citation-class='note']" mode="enhanced-bib">
<section>
<xsl:apply-templates mode="enhanced-bib"/>
</section>
</xsl:template>


<xsl:template match="db:section[$citation-class='note']/db:info" mode="enhanced-bib">
<xsl:copy-of select="."/>
</xsl:template>


<xsl:template match="db:footnote[$citation-class='note']" mode="enhanced-bib">
<footnote>
<xsl:apply-templates mode="enhanced-bib"/>
</footnote>
</xsl:template>


<xsl:template match="db:section/db:para[$citation-class='note']" mode="enhanced-bib">
<para>
<xsl:apply-templates mode="enhanced-bib"/>
</para>
</xsl:template>


<xsl:template match="db:footnote/db:para[$citation-class='note']" mode="enhanced-bib">
<para>
<xsl:apply-templates mode="enhanced-bib"/>
</para>
</xsl:template>


<xsl:template match="db:citation[$citation-class='note']" mode="enhanced-bib">
<!-- with footnote class citations, wrap all citations in a footnote, unless
already in a footnote -->
<xsl:choose>
<xsl:when test="ancestor::db:footnote">
<xsl:copy-of select="."/>
</xsl:when>
<xsl:otherwise>
<footnote>
<xsl:copy-of select="."/>
</footnote>
</xsl:otherwise>
</xsl:choose>
</xsl:template>


</xsl:stylesheet>

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.