<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.tei-c.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Rwst</id>
	<title>TEIWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.tei-c.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Rwst"/>
	<link rel="alternate" type="text/html" href="https://wiki.tei-c.org/index.php/Special:Contributions/Rwst"/>
	<updated>2026-07-29T16:07:10Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://wiki.tei-c.org/index.php?title=Bibl2struct.xslt&amp;diff=4458</id>
		<title>Bibl2struct.xslt</title>
		<link rel="alternate" type="text/html" href="https://wiki.tei-c.org/index.php?title=Bibl2struct.xslt&amp;diff=4458"/>
		<updated>2008-06-11T16:56:11Z</updated>

		<summary type="html">&lt;p&gt;Rwst: /* Stylesheet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Transforms TEI &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt;s into &amp;lt;biblStruct&amp;gt; bibliographies.&lt;br /&gt;
Ignores all other content. Produces a &amp;lt;listBibl&amp;gt;&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Required Input ==&lt;br /&gt;
&lt;br /&gt;
This document will take any XML file, not just TEI XML, and processes all&lt;br /&gt;
&#039;&#039;complete&#039;&#039; &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; bibliographies into equivalent &amp;lt;biblStruct&amp;gt;s.&lt;br /&gt;
&lt;br /&gt;
The transform differentiates five major cases from&lt;br /&gt;
the (non)-existence of &amp;lt;title&amp;gt;s of certain @level (a,j,m,s). The&lt;br /&gt;
level in parens, e.g. (a) means &#039;level a or without/blank level&#039;.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; has (a)+m+s titles ==&amp;gt; excerpt from work in series&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; has   (m)+s titles ==&amp;gt; work in series&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; has   (a)+j titles ==&amp;gt; journal article&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; has   (a)+m titles ==&amp;gt; excerpt from monograph&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; has     (m) titles ==&amp;gt; monograph&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;When an element contains @corresp the text is taken from that id.&lt;br /&gt;
When the document contains a &amp;lt;join result=&#039;bibl&#039; /&amp;gt;, we build that bibl&lt;br /&gt;
and process it like the others.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Expected Output ==&lt;br /&gt;
&amp;lt;nowiki&amp;gt; a &amp;lt;listBibl&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Known Restrictions or Problems ==&lt;br /&gt;
See TODO in the stylesheet.&lt;br /&gt;
&lt;br /&gt;
Please add any comments to the &#039;discussion&#039; tab. For payed support, please&lt;br /&gt;
mail the author (address within stylesheet).&lt;br /&gt;
&lt;br /&gt;
== Stylesheet ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!-- bibl2struct.xsl v. 08-03&lt;br /&gt;
  Transforms TEI &amp;lt;bibl&amp;gt;s into &amp;lt;biblstruct&amp;gt; bibliographies&lt;br /&gt;
  Author: (c) 2008 Ralf Stephan &amp;lt;ralf@ark.in-berlin.de&amp;gt;&lt;br /&gt;
  Published under GPL 2.0, see http://www.gnu.org/licenses/gpl-2.0.html&lt;br /&gt;
&lt;br /&gt;
  Description: the transform differentiates five major cases from&lt;br /&gt;
  the (non)-existence of &amp;lt;title&amp;gt;s of certain @level (a,j,m,s). The&lt;br /&gt;
    level in parens, e.g. (a) means &#039;level a or without/blank level&#039;.&lt;br /&gt;
    - &amp;lt;bibl&amp;gt; has (a)+m+s titles ==&amp;gt; excerpt from work in series&lt;br /&gt;
    - &amp;lt;bibl&amp;gt; has   (m)+s titles ==&amp;gt; work in series&lt;br /&gt;
    - &amp;lt;bibl&amp;gt; has   (a)+j titles ==&amp;gt; journal article&lt;br /&gt;
    - &amp;lt;bibl&amp;gt; has   (a)+m titles ==&amp;gt; excerpt from monograph&lt;br /&gt;
    - &amp;lt;bibl&amp;gt; has     (m) titles ==&amp;gt; monograph&lt;br /&gt;
&lt;br /&gt;
  When an element contains @corresp the text is taken from that id.&lt;br /&gt;
  When the document contains a &amp;lt;join result=&#039;bibl&#039; /&amp;gt;, we build that bibl&lt;br /&gt;
    and process it like the others.&lt;br /&gt;
&lt;br /&gt;
    History/Changelog:&lt;br /&gt;
    o 08-03: &lt;br /&gt;
      - removed &amp;lt;link&amp;gt; functionality&lt;br /&gt;
      - fixed &amp;lt;join&amp;gt; and @corresp matching priorities&lt;br /&gt;
      - @corresp didn&#039;t work at all&lt;br /&gt;
      - &amp;lt;edition&amp;gt; wasn&#039;t printed&lt;br /&gt;
      - journal refs without title weren&#039;t handled&lt;br /&gt;
      - no editor in simple monographs&lt;br /&gt;
      - better matching for elements that can occur outside &amp;lt;bibl&amp;gt;&lt;br /&gt;
      - added &amp;lt;corr&amp;gt; and &amp;lt;name&amp;gt; handling&lt;br /&gt;
    o 08-01: published&lt;br /&gt;
  TODO:&lt;br /&gt;
  =====&lt;br /&gt;
  o  &amp;lt;title type=&#039;alt&#039;&amp;gt; with &amp;lt;editor role=&#039;translator&#039;&amp;gt;&lt;br /&gt;
  o  assume from existing &amp;lt;author /&amp;gt; that author of ref is author of work?&lt;br /&gt;
  o  handle &amp;lt;bibl&amp;gt;...&amp;lt;series&amp;gt;...&amp;lt;/series&amp;gt;...&amp;lt;/bibl&amp;gt;&lt;br /&gt;
  o  what do we do we with refs without title?&lt;br /&gt;
  o  what if we have &amp;lt;author&amp;gt;&amp;lt;corr&amp;gt;...&amp;lt;/corr&amp;gt;&amp;lt;/author&amp;gt; ?&lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:stylesheet xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot; version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
    xmlns:exsl=&amp;quot;http://exslt.org/common&amp;quot; extension-element-prefixes=&amp;quot;exsl&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;&lt;br /&gt;
	    doctype-public=&amp;quot;-//TEI P5//DTD Main Document Type//EN&amp;quot; &lt;br /&gt;
	    doctype-system=&amp;quot;tei2.dtd&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Include a link to CSS --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:processing-instruction name=&amp;quot;xml-stylesheet&amp;quot;&amp;gt;href=&amp;quot;eb-bib.css&amp;quot; type=&amp;quot;text/css&amp;quot;&amp;lt;/xsl:processing-instruction&amp;gt;&lt;br /&gt;
      &amp;lt;listBibl&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates /&amp;gt;&lt;br /&gt;
      &amp;lt;/listBibl&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- remove all default attributes --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@status&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@default&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@org[.=&#039;uniform&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@sample[.=&#039;complete&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@part[.=&#039;N&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@direct[.=&#039;unspecified&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@targOrder[.=&#039;U&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@from[.=&#039;ROOT&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@anchored[.=&#039;yes&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@place[.=&#039;unspecified&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;teiHeader/@type&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- do not copy all CDATA, we copy explicitly later --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;text()&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- ignore teiHeader --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;teiHeader&#039; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- &amp;lt;bibl&amp;gt; without &amp;lt;title&amp;gt; does nothing --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[not(title)]&#039; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- handle &amp;lt;join result=&#039;bibl&#039;&amp;gt; here --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;join[@result=&amp;quot;bibl&amp;quot;]&#039; priority=&#039;1&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:variable name=&#039;joint&#039;&amp;gt;&lt;br /&gt;
        &amp;lt;bibl&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:call-template name=&#039;chomp-targets-recursively&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:with-param name=&#039;idstr&#039;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&#039;@targets&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:with-param&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
        &amp;lt;/bibl&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:apply-templates select=&#039;exsl:node-set($joint)//bibl&#039; /&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Calls copy-of with all ids in targets string --&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Partly stolen from http://wwbota.free.fr/XSLT_models/split-string.xslt--&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template name=&#039;chomp-targets-recursively&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:param name=&#039;idstr&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:variable name=&amp;quot;first&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name=&amp;quot;first0&amp;quot; select=&amp;quot;substring-before($idstr,&#039; &#039;)&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:when test=&amp;quot;$first0&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:copy-of select=&amp;quot;$first0&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:copy-of select=&amp;quot;$idstr&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:if test=&amp;quot;string-length($first)&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:call-template name=&#039;chomp-targets-recursively&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:with-param name=&amp;quot;idstr&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;substring-after($idstr,&#039; &#039;)&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:with-param&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:copy-of select=&#039;//*[@id=$first]&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Handle bibl with elements having @corresp attribute --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[*[@corresp]]&#039; priority=&#039;1&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:variable name=&#039;tmp1&#039;&amp;gt;&lt;br /&gt;
        &amp;lt;bibl&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;*&#039; /&amp;gt; &amp;lt;!--corresp is handled --&amp;gt;&lt;br /&gt;
        &amp;lt;/bibl&amp;gt;                              &amp;lt;!--at element level   --&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:apply-templates select=&#039;exsl:node-set($tmp1)//bibl&#039; /&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--===================================--&amp;gt;&lt;br /&gt;
    &amp;lt;!-- complete bibl with titles (a)+m+s --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[(title[@level=&amp;quot;a&amp;quot;] or title[@level=&amp;quot;&amp;quot;] or title[not(@level)]) and title[@level=&amp;quot;m&amp;quot;] and title[@level=&amp;quot;s&amp;quot;]]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;biblStruct&amp;gt;&lt;br /&gt;
        &amp;lt;analytic&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;author&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[(@level=&amp;quot;a&amp;quot; or @level=&amp;quot;&amp;quot; or not(@level))]&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/analytic&amp;gt;&lt;br /&gt;
        &amp;lt;monogr&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;m&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;series&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;s&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;date|edition|publisher|pubPlace|biblScope&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;publisher&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;pubPlace&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;edition&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;date&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;biblScope&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/imprint&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;/series&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;note&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/biblStruct&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- complete bibl with titles (m)+s --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[not(title[@level=&amp;quot;a&amp;quot;]) and (title[@level=&amp;quot;m&amp;quot;] or title[@level=&amp;quot;&amp;quot;] or title[not(@level)]) and title[@level=&amp;quot;s&amp;quot;]]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;biblStruct&amp;gt;&lt;br /&gt;
        &amp;lt;monogr&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;author&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;m&amp;quot; or @level=&amp;quot;&amp;quot; or not(@level)]&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;date|edition|publisher|pubPlace|biblScope&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;publisher&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;pubPlace&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;edition&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;date&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;biblScope&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/imprint&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;series&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;s&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/series&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;note&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/biblStruct&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- bibl with title (a)+j --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[not(title[@level=&amp;quot;m&amp;quot;]) and not(title[@level=&amp;quot;s&amp;quot;]) and title[@level=&amp;quot;j&amp;quot;]]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;biblStruct&amp;gt;&lt;br /&gt;
        &amp;lt;analytic&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;author&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[not(@level) or @level=&amp;quot;a&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/analytic&amp;gt;&lt;br /&gt;
        &amp;lt;monogr&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;j&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;date|publisher|pubPlace|biblScope&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;publisher&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;pubPlace&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;date&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;biblScope&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/imprint&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;note&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/biblStruct&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- complete bibl with title (a)+m --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[title[not(@level) or @level=&amp;quot;a&amp;quot;] and title[@level=&amp;quot;m&amp;quot;]]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;biblStruct&amp;gt;&lt;br /&gt;
        &amp;lt;analytic&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;author&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[not(@level) or @level=&amp;quot;a&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/analytic&amp;gt;&lt;br /&gt;
        &amp;lt;monogr&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;m&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;date|edition|publisher|pubPlace|biblScope&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;publisher&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;pubPlace&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;edition&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;date&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;biblScope&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/imprint&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;note&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/biblStruct&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- bibl with either title m only or blank only, all without a,j,s --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[(not(title[@level=&amp;quot;a&amp;quot;]) and not(title[@level=&amp;quot;j&amp;quot;]) and not(title[@level=&amp;quot;s&amp;quot;])) and ((title[@level=&amp;quot;m&amp;quot;] and not(title[not(@level)])) or (not(title[@level=&amp;quot;m&amp;quot;]) and title[not(@level)]))]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;biblStruct&amp;gt;&lt;br /&gt;
        &amp;lt;monogr&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;author&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;date|edition|publisher|pubPlace|biblScope&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;publisher&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;pubPlace&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;edition&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;date&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;biblScope&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/imprint&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;note&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/biblStruct&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--=========================================--&amp;gt;&lt;br /&gt;
    &amp;lt;!-- all elements except (title outside of bibl): do deep copy --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@* | author | title [ancestor::bibl] | editor | &lt;br /&gt;
      biblScope | edition | date[ancestor::bibl] | publisher | pubPlace | &lt;br /&gt;
      note[ancestor::bibl] | corr | name[ancestor::bibl]&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:when test=&#039;@corresp&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:variable name=&#039;tmp&#039;&amp;gt;&lt;br /&gt;
            &amp;lt;bibl&amp;gt; &lt;br /&gt;
              &amp;lt;xsl:copy&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:copy-of select=&#039;id(@corresp)/@*&#039; /&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:copy-of select=&#039;id(@corresp)/node()&#039; /&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:copy&amp;gt;&lt;br /&gt;
            &amp;lt;/bibl&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;exsl:node-set($tmp)//bibl/*&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:copy&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&amp;quot;@*[not(name()=&#039;TEIform&#039;)]|node()|text()&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:copy&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl/series&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:text&amp;gt;seriesabc&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:copy-of select=&#039;*/node()&#039; /&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- copy CDATA within elements except titles --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;bibl/text() | author/text() | editor/text() | &lt;br /&gt;
      //bibl//title/text() | biblScope/text() | //bibl//date/text() | &lt;br /&gt;
      edition/text() | pubPlace/text() | publisher/text() | //bibl//note/text() &lt;br /&gt;
      | //bibl//corr/text() | //bibl//name/text()&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:copy /&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:XSLT]]&lt;br /&gt;
[[Category:XSLT:1.0]]&lt;br /&gt;
[[Category:Conversion and preprocessing tools]]&lt;/div&gt;</summary>
		<author><name>Rwst</name></author>
	</entry>
	<entry>
		<id>https://wiki.tei-c.org/index.php?title=Bibl2struct.xslt&amp;diff=4457</id>
		<title>Bibl2struct.xslt</title>
		<link rel="alternate" type="text/html" href="https://wiki.tei-c.org/index.php?title=Bibl2struct.xslt&amp;diff=4457"/>
		<updated>2008-06-11T16:55:23Z</updated>

		<summary type="html">&lt;p&gt;Rwst: /* Stylesheet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Transforms TEI &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt;s into &amp;lt;biblStruct&amp;gt; bibliographies.&lt;br /&gt;
Ignores all other content. Produces a &amp;lt;listBibl&amp;gt;&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Required Input ==&lt;br /&gt;
&lt;br /&gt;
This document will take any XML file, not just TEI XML, and processes all&lt;br /&gt;
&#039;&#039;complete&#039;&#039; &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; bibliographies into equivalent &amp;lt;biblStruct&amp;gt;s.&lt;br /&gt;
&lt;br /&gt;
The transform differentiates five major cases from&lt;br /&gt;
the (non)-existence of &amp;lt;title&amp;gt;s of certain @level (a,j,m,s). The&lt;br /&gt;
level in parens, e.g. (a) means &#039;level a or without/blank level&#039;.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; has (a)+m+s titles ==&amp;gt; excerpt from work in series&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; has   (m)+s titles ==&amp;gt; work in series&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; has   (a)+j titles ==&amp;gt; journal article&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; has   (a)+m titles ==&amp;gt; excerpt from monograph&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; has     (m) titles ==&amp;gt; monograph&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;When an element contains @corresp the text is taken from that id.&lt;br /&gt;
When the document contains a &amp;lt;join result=&#039;bibl&#039; /&amp;gt;, we build that bibl&lt;br /&gt;
and process it like the others.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Expected Output ==&lt;br /&gt;
&amp;lt;nowiki&amp;gt; a &amp;lt;listBibl&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Known Restrictions or Problems ==&lt;br /&gt;
See TODO in the stylesheet.&lt;br /&gt;
&lt;br /&gt;
Please add any comments to the &#039;discussion&#039; tab. For payed support, please&lt;br /&gt;
mail the author (address within stylesheet).&lt;br /&gt;
&lt;br /&gt;
== Stylesheet ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!-- bibl2struct.xsl v. 08-03&lt;br /&gt;
  Transforms TEI &amp;lt;bibl&amp;gt;s into &amp;lt;biblstruct&amp;gt; bibliographies&lt;br /&gt;
  Author: (c) 2008 Ralf Stephan &amp;lt;ralf@ark.in-berlin.de&amp;gt;&lt;br /&gt;
  Published under GPL 2.0, see http://www.gnu.org/licenses/gpl-2.0.html&lt;br /&gt;
&lt;br /&gt;
  Description: the transform differentiates five major cases from&lt;br /&gt;
  the (non)-existence of &amp;lt;title&amp;gt;s of certain @level (a,j,m,s). The&lt;br /&gt;
    level in parens, e.g. (a) means &#039;level a or without/blank level&#039;.&lt;br /&gt;
    - &amp;lt;bibl&amp;gt; has (a)+m+s titles ==&amp;gt; excerpt from work in series&lt;br /&gt;
    - &amp;lt;bibl&amp;gt; has   (m)+s titles ==&amp;gt; work in series&lt;br /&gt;
    - &amp;lt;bibl&amp;gt; has   (a)+j titles ==&amp;gt; journal article&lt;br /&gt;
    - &amp;lt;bibl&amp;gt; has   (a)+m titles ==&amp;gt; excerpt from monograph&lt;br /&gt;
    - &amp;lt;bibl&amp;gt; has     (m) titles ==&amp;gt; monograph&lt;br /&gt;
&lt;br /&gt;
  When an element contains @corresp the text is taken from that id.&lt;br /&gt;
  When the document contains a &amp;lt;join result=&#039;bibl&#039; /&amp;gt;, we build that bibl&lt;br /&gt;
    and process it like the others.&lt;br /&gt;
&lt;br /&gt;
    History/Changelog:&lt;br /&gt;
    o 08-03: &lt;br /&gt;
      - removed &amp;lt;link&amp;gt; functionality&lt;br /&gt;
      - fixed &amp;lt;join&amp;gt; and @corresp matching priorities&lt;br /&gt;
      - @corresp didn&#039;t work at all&lt;br /&gt;
      - &amp;lt;edition&amp;gt; wasn&#039;t printed&lt;br /&gt;
      - journal refs without title weren&#039;t handled&lt;br /&gt;
      - no editor in simple monographs&lt;br /&gt;
      - better matching for elements that can occur outside &amp;lt;bibl&amp;gt;&lt;br /&gt;
      - added &amp;lt;corr&amp;gt; and &amp;lt;name&amp;gt; handling&lt;br /&gt;
    o 08-01: published&lt;br /&gt;
  TODO:&lt;br /&gt;
  =====&lt;br /&gt;
  o  &amp;lt;title type=&#039;alt&#039;&amp;gt; with &amp;lt;editor role=&#039;translator&#039;&amp;gt;&lt;br /&gt;
  o  assume from existing &amp;lt;author /&amp;gt; that author of ref is author of work?&lt;br /&gt;
  o  handle &amp;lt;bibl&amp;gt;...&amp;lt;series&amp;gt;...&amp;lt;/series&amp;gt;...&amp;lt;/bibl&amp;gt;&lt;br /&gt;
  o  what do we do we with refs without title?&lt;br /&gt;
  o  what if we have &amp;lt;author&amp;gt;&amp;lt;corr&amp;gt;...&amp;lt;/corr&amp;gt;&amp;lt;/author&amp;gt; ?&lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:stylesheet xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot; version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
    xmlns:exsl=&amp;quot;http://exslt.org/common&amp;quot; extension-element-prefixes=&amp;quot;exsl&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;&lt;br /&gt;
	    doctype-public=&amp;quot;-//TEI P5//DTD Main Document Type//EN&amp;quot; &lt;br /&gt;
	    doctype-system=&amp;quot;tei2.dtd&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Include a link to CSS --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:processing-instruction name=&amp;quot;xml-stylesheet&amp;quot;&amp;gt;href=&amp;quot;eb-bib.css&amp;quot; type=&amp;quot;text/css&amp;quot;&amp;lt;/xsl:processing-instruction&amp;gt;&lt;br /&gt;
      &amp;lt;listBibl&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates /&amp;gt;&lt;br /&gt;
      &amp;lt;/listBibl&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- remove all default attributes --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@status&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@default&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@org[.=&#039;uniform&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@sample[.=&#039;complete&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@part[.=&#039;N&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@direct[.=&#039;unspecified&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@targOrder[.=&#039;U&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@from[.=&#039;ROOT&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@anchored[.=&#039;yes&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@place[.=&#039;unspecified&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;teiHeader/@type&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- do not copy all CDATA, we copy explicitly later --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;text()&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- ignore teiHeader --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;teiHeader&#039; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- &amp;lt;bibl&amp;gt; without &amp;lt;title&amp;gt; does nothing --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[not(title)]&#039; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- handle &amp;lt;join result=&#039;bibl&#039;&amp;gt; here --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;join[@result=&amp;quot;bibl&amp;quot;]&#039; priority=&#039;1&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:variable name=&#039;joint&#039;&amp;gt;&lt;br /&gt;
        &amp;lt;bibl&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:call-template name=&#039;chomp-targets-recursively&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:with-param name=&#039;idstr&#039;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&#039;@targets&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:with-param&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
        &amp;lt;/bibl&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:apply-templates select=&#039;exsl:node-set($joint)//bibl&#039; /&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Calls copy-of with all ids in targets string --&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Partly stolen from http://wwbota.free.fr/XSLT_models/split-string.xslt--&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template name=&#039;chomp-targets-recursively&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:param name=&#039;idstr&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:variable name=&amp;quot;first&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name=&amp;quot;first0&amp;quot; select=&amp;quot;substring-before($idstr,&#039; &#039;)&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:when test=&amp;quot;$first0&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:copy-of select=&amp;quot;$first0&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:copy-of select=&amp;quot;$idstr&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:if test=&amp;quot;string-length($first)&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:call-template name=&#039;chomp-targets-recursively&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:with-param name=&amp;quot;idstr&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;substring-after($idstr,&#039; &#039;)&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:with-param&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:copy-of select=&#039;//*[@id=$first]&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Handle bibl with elements having @corresp attribute --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[*[@corresp]]&#039; priority=&#039;1&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:variable name=&#039;tmp1&#039;&amp;gt;&lt;br /&gt;
        &amp;lt;bibl&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;*&#039; /&amp;gt; &amp;lt;!--corresp is handled --&amp;gt;&lt;br /&gt;
        &amp;lt;/bibl&amp;gt;                              &amp;lt;!--at element level   --&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:apply-templates select=&#039;exsl:node-set($tmp1)//bibl&#039; /&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--===================================--&amp;gt;&lt;br /&gt;
    &amp;lt;!-- complete bibl with titles (a)+m+s --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[(title[@level=&amp;quot;a&amp;quot;] or title[@level=&amp;quot;&amp;quot;] or title[not(@level)]) and title[@level=&amp;quot;m&amp;quot;] and title[@level=&amp;quot;s&amp;quot;]]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;biblStruct&amp;gt;&lt;br /&gt;
        &amp;lt;analytic&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;author&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[(@level=&amp;quot;a&amp;quot; or @level=&amp;quot;&amp;quot; or not(@level))]&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/analytic&amp;gt;&lt;br /&gt;
        &amp;lt;monogr&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;m&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;series&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;s&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;date|edition|publisher|pubPlace|biblScope&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;publisher&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;pubPlace&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;edition&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;date&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;biblScope&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/imprint&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;/series&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;note&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/biblStruct&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- complete bibl with titles (m)+s --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[not(title[@level=&amp;quot;a&amp;quot;]) and (title[@level=&amp;quot;m&amp;quot;] or title[@level=&amp;quot;&amp;quot;] or title[not(@level)]) and title[@level=&amp;quot;s&amp;quot;]]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;biblStruct&amp;gt;&lt;br /&gt;
        &amp;lt;monogr&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;author&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;m&amp;quot; or @level=&amp;quot;&amp;quot; or not(@level)]&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;date|edition|publisher|pubPlace|biblScope&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;publisher&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;pubPlace&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;edition&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;date&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;biblScope&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/imprint&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;series&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;s&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/series&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;note&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/biblStruct&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- bibl with title (a)+j --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[not(title[@level=&amp;quot;m&amp;quot;]) and not(title[@level=&amp;quot;s&amp;quot;]) and title[@level=&amp;quot;j&amp;quot;]]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;biblStruct&amp;gt;&lt;br /&gt;
        &amp;lt;analytic&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;author&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[not(@level) or @level=&amp;quot;a&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/analytic&amp;gt;&lt;br /&gt;
        &amp;lt;monogr&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;j&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;date|publisher|pubPlace|biblScope&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;publisher&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;pubPlace&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;date&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;biblScope&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/imprint&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;note&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/biblStruct&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- complete bibl with title (a)+m --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[title[not(@level) or @level=&amp;quot;a&amp;quot;] and title[@level=&amp;quot;m&amp;quot;]]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;biblStruct&amp;gt;&lt;br /&gt;
        &amp;lt;analytic&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;author&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[not(@level) or @level=&amp;quot;a&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/analytic&amp;gt;&lt;br /&gt;
        &amp;lt;monogr&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;m&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;date|edition|publisher|pubPlace|biblScope&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;publisher&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;pubPlace&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;edition&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;date&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;biblScope&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/imprint&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;note&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/biblStruct&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- bibl with either title m only or blank only, all without a,j,s --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[(not(title[@level=&amp;quot;a&amp;quot;]) and not(title[@level=&amp;quot;j&amp;quot;]) and not(title[@level=&amp;quot;s&amp;quot;])) and ((title[@level=&amp;quot;m&amp;quot;] and not(title[not(@level)])) or (not(title[@level=&amp;quot;m&amp;quot;]) and title[not(@level)]))]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;biblStruct&amp;gt;&lt;br /&gt;
        &amp;lt;monogr&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;author&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;date|edition|publisher|pubPlace|biblScope&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;publisher&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;pubPlace&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;edition&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;date&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;biblScope&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/imprint&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;note&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/biblStruct&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--=========================================--&amp;gt;&lt;br /&gt;
    &amp;lt;!-- all elements except (title outside of bibl): do deep copy --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@* | author | title [ancestor::bibl] | editor | &lt;br /&gt;
      biblScope | edition | date[ancestor::bibl] | publisher | pubPlace | &lt;br /&gt;
      note[ancestor::bibl] | corr | name[ancestor::bibl]&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:when test=&#039;@corresp&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:variable name=&#039;tmp&#039;&amp;gt;&lt;br /&gt;
            &amp;lt;bibl&amp;gt; &lt;br /&gt;
              &amp;lt;xsl:copy&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:copy-of select=&#039;id(@corresp)/@*&#039; /&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:copy-of select=&#039;id(@corresp)/node()&#039; /&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:copy&amp;gt;&lt;br /&gt;
            &amp;lt;/bibl&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;exsl:node-set($tmp)//bibl/*&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:copy&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&amp;quot;@*[not(name()=&#039;TEIform&#039;)]|node()|text()&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:copy&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl/series&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:text&amp;gt;seriesabc&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:copy-of select=&#039;*/node()&#039; /&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- copy CDATA within elements except titles --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;bibl/text() | author/text() | editor/text() | &lt;br /&gt;
      //bibl//title/text() | biblScope/text() | //bibl//date/text() | &lt;br /&gt;
      edition/text() | pubPlace/text() | publisher/text() | //bibl//note/text() &lt;br /&gt;
      | //bibl//corr/text() | //bibl//name/text()&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:copy /&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:XSLT]]&lt;br /&gt;
[[Category:XSLT:1.0]]&lt;br /&gt;
[[Category:Conversion and preprocessing]]&lt;/div&gt;</summary>
		<author><name>Rwst</name></author>
	</entry>
	<entry>
		<id>https://wiki.tei-c.org/index.php?title=Bibl2struct.xslt&amp;diff=4456</id>
		<title>Bibl2struct.xslt</title>
		<link rel="alternate" type="text/html" href="https://wiki.tei-c.org/index.php?title=Bibl2struct.xslt&amp;diff=4456"/>
		<updated>2008-06-11T16:54:53Z</updated>

		<summary type="html">&lt;p&gt;Rwst: /* Stylesheet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Transforms TEI &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt;s into &amp;lt;biblStruct&amp;gt; bibliographies.&lt;br /&gt;
Ignores all other content. Produces a &amp;lt;listBibl&amp;gt;&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Required Input ==&lt;br /&gt;
&lt;br /&gt;
This document will take any XML file, not just TEI XML, and processes all&lt;br /&gt;
&#039;&#039;complete&#039;&#039; &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; bibliographies into equivalent &amp;lt;biblStruct&amp;gt;s.&lt;br /&gt;
&lt;br /&gt;
The transform differentiates five major cases from&lt;br /&gt;
the (non)-existence of &amp;lt;title&amp;gt;s of certain @level (a,j,m,s). The&lt;br /&gt;
level in parens, e.g. (a) means &#039;level a or without/blank level&#039;.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; has (a)+m+s titles ==&amp;gt; excerpt from work in series&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; has   (m)+s titles ==&amp;gt; work in series&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; has   (a)+j titles ==&amp;gt; journal article&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; has   (a)+m titles ==&amp;gt; excerpt from monograph&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; has     (m) titles ==&amp;gt; monograph&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;When an element contains @corresp the text is taken from that id.&lt;br /&gt;
When the document contains a &amp;lt;join result=&#039;bibl&#039; /&amp;gt;, we build that bibl&lt;br /&gt;
and process it like the others.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Expected Output ==&lt;br /&gt;
&amp;lt;nowiki&amp;gt; a &amp;lt;listBibl&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Known Restrictions or Problems ==&lt;br /&gt;
See TODO in the stylesheet.&lt;br /&gt;
&lt;br /&gt;
Please add any comments to the &#039;discussion&#039; tab. For payed support, please&lt;br /&gt;
mail the author (address within stylesheet).&lt;br /&gt;
&lt;br /&gt;
== Stylesheet ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!-- bibl2struct.xsl v. 08-03&lt;br /&gt;
  Transforms TEI &amp;lt;bibl&amp;gt;s into &amp;lt;biblstruct&amp;gt; bibliographies&lt;br /&gt;
  Author: (c) 2008 Ralf Stephan &amp;lt;ralf@ark.in-berlin.de&amp;gt;&lt;br /&gt;
  Published under GPL 2.0, see http://www.gnu.org/licenses/gpl-2.0.html&lt;br /&gt;
&lt;br /&gt;
  Description: the transform differentiates five major cases from&lt;br /&gt;
  the (non)-existence of &amp;lt;title&amp;gt;s of certain @level (a,j,m,s). The&lt;br /&gt;
    level in parens, e.g. (a) means &#039;level a or without/blank level&#039;.&lt;br /&gt;
    - &amp;lt;bibl&amp;gt; has (a)+m+s titles ==&amp;gt; excerpt from work in series&lt;br /&gt;
    - &amp;lt;bibl&amp;gt; has   (m)+s titles ==&amp;gt; work in series&lt;br /&gt;
    - &amp;lt;bibl&amp;gt; has   (a)+j titles ==&amp;gt; journal article&lt;br /&gt;
    - &amp;lt;bibl&amp;gt; has   (a)+m titles ==&amp;gt; excerpt from monograph&lt;br /&gt;
    - &amp;lt;bibl&amp;gt; has     (m) titles ==&amp;gt; monograph&lt;br /&gt;
&lt;br /&gt;
  When an element contains @corresp the text is taken from that id.&lt;br /&gt;
  When the document contains a &amp;lt;join result=&#039;bibl&#039; /&amp;gt;, we build that bibl&lt;br /&gt;
    and process it like the others.&lt;br /&gt;
&lt;br /&gt;
    History/Changelog:&lt;br /&gt;
    o 08-03: &lt;br /&gt;
      - removed &amp;lt;link&amp;gt; functionality&lt;br /&gt;
      - fixed &amp;lt;join&amp;gt; and @corresp matching priorities&lt;br /&gt;
      - @corresp didn&#039;t work at all&lt;br /&gt;
      - &amp;lt;edition&amp;gt; wasn&#039;t printed&lt;br /&gt;
      - journal refs without title weren&#039;t handled&lt;br /&gt;
      - no editor in simple monographs&lt;br /&gt;
      - better matching for elements that can occur outside &amp;lt;bibl&amp;gt;&lt;br /&gt;
      - added &amp;lt;corr&amp;gt; and &amp;lt;name&amp;gt; handling&lt;br /&gt;
    o 08-01: published&lt;br /&gt;
  TODO:&lt;br /&gt;
  =====&lt;br /&gt;
  o  &amp;lt;title type=&#039;alt&#039;&amp;gt; with &amp;lt;editor role=&#039;translator&#039;&amp;gt;&lt;br /&gt;
  o  assume from existing &amp;lt;author /&amp;gt; that author of ref is author of work?&lt;br /&gt;
  o  handle &amp;lt;bibl&amp;gt;...&amp;lt;series&amp;gt;...&amp;lt;/series&amp;gt;...&amp;lt;/bibl&amp;gt;&lt;br /&gt;
  o  what do we do we with refs without title?&lt;br /&gt;
  o  what if we have &amp;lt;author&amp;gt;&amp;lt;corr&amp;gt;...&amp;lt;/corr&amp;gt;&amp;lt;/author&amp;gt; ?&lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:stylesheet xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot; version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
    xmlns:exsl=&amp;quot;http://exslt.org/common&amp;quot; extension-element-prefixes=&amp;quot;exsl&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;&lt;br /&gt;
	    doctype-public=&amp;quot;-//TEI P5//DTD Main Document Type//EN&amp;quot; &lt;br /&gt;
	    doctype-system=&amp;quot;tei2.dtd&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Include a link to CSS --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:processing-instruction name=&amp;quot;xml-stylesheet&amp;quot;&amp;gt;href=&amp;quot;eb-bib.css&amp;quot; type=&amp;quot;text/css&amp;quot;&amp;lt;/xsl:processing-instruction&amp;gt;&lt;br /&gt;
      &amp;lt;listBibl&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates /&amp;gt;&lt;br /&gt;
      &amp;lt;/listBibl&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- remove all default attributes --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@status&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@default&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@org[.=&#039;uniform&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@sample[.=&#039;complete&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@part[.=&#039;N&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@direct[.=&#039;unspecified&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@targOrder[.=&#039;U&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@from[.=&#039;ROOT&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@anchored[.=&#039;yes&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@place[.=&#039;unspecified&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;teiHeader/@type&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- do not copy all CDATA, we copy explicitly later --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;text()&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- ignore teiHeader --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;teiHeader&#039; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- &amp;lt;bibl&amp;gt; without &amp;lt;title&amp;gt; does nothing --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[not(title)]&#039; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- handle &amp;lt;join result=&#039;bibl&#039;&amp;gt; here --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;join[@result=&amp;quot;bibl&amp;quot;]&#039; priority=&#039;1&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:variable name=&#039;joint&#039;&amp;gt;&lt;br /&gt;
        &amp;lt;bibl&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:call-template name=&#039;chomp-targets-recursively&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:with-param name=&#039;idstr&#039;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&#039;@targets&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:with-param&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
        &amp;lt;/bibl&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:apply-templates select=&#039;exsl:node-set($joint)//bibl&#039; /&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Calls copy-of with all ids in targets string --&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Partly stolen from http://wwbota.free.fr/XSLT_models/split-string.xslt--&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template name=&#039;chomp-targets-recursively&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:param name=&#039;idstr&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:variable name=&amp;quot;first&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name=&amp;quot;first0&amp;quot; select=&amp;quot;substring-before($idstr,&#039; &#039;)&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:when test=&amp;quot;$first0&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:copy-of select=&amp;quot;$first0&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:copy-of select=&amp;quot;$idstr&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:if test=&amp;quot;string-length($first)&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:call-template name=&#039;chomp-targets-recursively&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:with-param name=&amp;quot;idstr&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;substring-after($idstr,&#039; &#039;)&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:with-param&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:copy-of select=&#039;//*[@id=$first]&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Handle bibl with elements having @corresp attribute --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[*[@corresp]]&#039; priority=&#039;1&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:variable name=&#039;tmp1&#039;&amp;gt;&lt;br /&gt;
        &amp;lt;bibl&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;*&#039; /&amp;gt; &amp;lt;!--corresp is handled --&amp;gt;&lt;br /&gt;
        &amp;lt;/bibl&amp;gt;                              &amp;lt;!--at element level   --&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:apply-templates select=&#039;exsl:node-set($tmp1)//bibl&#039; /&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--===================================--&amp;gt;&lt;br /&gt;
    &amp;lt;!-- complete bibl with titles (a)+m+s --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[(title[@level=&amp;quot;a&amp;quot;] or title[@level=&amp;quot;&amp;quot;] or title[not(@level)]) and title[@level=&amp;quot;m&amp;quot;] and title[@level=&amp;quot;s&amp;quot;]]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;biblStruct&amp;gt;&lt;br /&gt;
        &amp;lt;analytic&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;author&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[(@level=&amp;quot;a&amp;quot; or @level=&amp;quot;&amp;quot; or not(@level))]&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/analytic&amp;gt;&lt;br /&gt;
        &amp;lt;monogr&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;m&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;series&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;s&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;date|edition|publisher|pubPlace|biblScope&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;publisher&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;pubPlace&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;edition&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;date&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;biblScope&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/imprint&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;/series&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;note&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/biblStruct&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- complete bibl with titles (m)+s --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[not(title[@level=&amp;quot;a&amp;quot;]) and (title[@level=&amp;quot;m&amp;quot;] or title[@level=&amp;quot;&amp;quot;] or title[not(@level)]) and title[@level=&amp;quot;s&amp;quot;]]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;biblStruct&amp;gt;&lt;br /&gt;
        &amp;lt;monogr&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;author&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;m&amp;quot; or @level=&amp;quot;&amp;quot; or not(@level)]&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;date|edition|publisher|pubPlace|biblScope&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;publisher&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;pubPlace&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;edition&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;date&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;biblScope&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/imprint&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;series&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;s&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/series&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;note&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/biblStruct&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- bibl with title (a)+j --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[not(title[@level=&amp;quot;m&amp;quot;]) and not(title[@level=&amp;quot;s&amp;quot;]) and title[@level=&amp;quot;j&amp;quot;]]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;biblStruct&amp;gt;&lt;br /&gt;
        &amp;lt;analytic&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;author&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[not(@level) or @level=&amp;quot;a&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/analytic&amp;gt;&lt;br /&gt;
        &amp;lt;monogr&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;j&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;date|publisher|pubPlace|biblScope&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;publisher&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;pubPlace&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;date&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;biblScope&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/imprint&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;note&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/biblStruct&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- complete bibl with title (a)+m --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[title[not(@level) or @level=&amp;quot;a&amp;quot;] and title[@level=&amp;quot;m&amp;quot;]]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;biblStruct&amp;gt;&lt;br /&gt;
        &amp;lt;analytic&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;author&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[not(@level) or @level=&amp;quot;a&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/analytic&amp;gt;&lt;br /&gt;
        &amp;lt;monogr&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;m&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;date|edition|publisher|pubPlace|biblScope&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;publisher&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;pubPlace&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;edition&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;date&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;biblScope&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/imprint&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;note&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/biblStruct&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- bibl with either title m only or blank only, all without a,j,s --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[(not(title[@level=&amp;quot;a&amp;quot;]) and not(title[@level=&amp;quot;j&amp;quot;]) and not(title[@level=&amp;quot;s&amp;quot;])) and ((title[@level=&amp;quot;m&amp;quot;] and not(title[not(@level)])) or (not(title[@level=&amp;quot;m&amp;quot;]) and title[not(@level)]))]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;biblStruct&amp;gt;&lt;br /&gt;
        &amp;lt;monogr&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;author&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;date|edition|publisher|pubPlace|biblScope&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;publisher&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;pubPlace&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;edition&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;date&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;biblScope&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/imprint&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;note&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/biblStruct&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--=========================================--&amp;gt;&lt;br /&gt;
    &amp;lt;!-- all elements except (title outside of bibl): do deep copy --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@* | author | title [ancestor::bibl] | editor | &lt;br /&gt;
      biblScope | edition | date[ancestor::bibl] | publisher | pubPlace | &lt;br /&gt;
      note[ancestor::bibl] | corr | name[ancestor::bibl]&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:when test=&#039;@corresp&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:variable name=&#039;tmp&#039;&amp;gt;&lt;br /&gt;
            &amp;lt;bibl&amp;gt; &lt;br /&gt;
              &amp;lt;xsl:copy&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:copy-of select=&#039;id(@corresp)/@*&#039; /&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:copy-of select=&#039;id(@corresp)/node()&#039; /&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:copy&amp;gt;&lt;br /&gt;
            &amp;lt;/bibl&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;exsl:node-set($tmp)//bibl/*&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:copy&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&amp;quot;@*[not(name()=&#039;TEIform&#039;)]|node()|text()&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:copy&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl/series&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:text&amp;gt;seriesabc&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:copy-of select=&#039;*/node()&#039; /&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- copy CDATA within elements except titles --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;bibl/text() | author/text() | editor/text() | &lt;br /&gt;
      //bibl//title/text() | biblScope/text() | //bibl//date/text() | &lt;br /&gt;
      edition/text() | pubPlace/text() | publisher/text() | //bibl//note/text() &lt;br /&gt;
      | //bibl//corr/text() | //bibl//name/text()&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:copy /&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:XSLT]]&lt;br /&gt;
[[Category:XSLT:1.0]]&lt;br /&gt;
[[Category:Conversion and Preprocessing]]&lt;/div&gt;</summary>
		<author><name>Rwst</name></author>
	</entry>
	<entry>
		<id>https://wiki.tei-c.org/index.php?title=Bibl2struct.xslt&amp;diff=4248</id>
		<title>Bibl2struct.xslt</title>
		<link rel="alternate" type="text/html" href="https://wiki.tei-c.org/index.php?title=Bibl2struct.xslt&amp;diff=4248"/>
		<updated>2008-03-18T10:14:25Z</updated>

		<summary type="html">&lt;p&gt;Rwst: /* Required Input */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Transforms TEI &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt;s into &amp;lt;biblStruct&amp;gt; bibliographies.&lt;br /&gt;
Ignores all other content. Produces a &amp;lt;listBibl&amp;gt;&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Required Input ==&lt;br /&gt;
&lt;br /&gt;
This document will take any XML file, not just TEI XML, and processes all&lt;br /&gt;
&#039;&#039;complete&#039;&#039; &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; bibliographies into equivalent &amp;lt;biblStruct&amp;gt;s.&lt;br /&gt;
&lt;br /&gt;
The transform differentiates five major cases from&lt;br /&gt;
the (non)-existence of &amp;lt;title&amp;gt;s of certain @level (a,j,m,s). The&lt;br /&gt;
level in parens, e.g. (a) means &#039;level a or without/blank level&#039;.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; has (a)+m+s titles ==&amp;gt; excerpt from work in series&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; has   (m)+s titles ==&amp;gt; work in series&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; has   (a)+j titles ==&amp;gt; journal article&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; has   (a)+m titles ==&amp;gt; excerpt from monograph&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; has     (m) titles ==&amp;gt; monograph&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;When an element contains @corresp the text is taken from that id.&lt;br /&gt;
When the document contains a &amp;lt;join result=&#039;bibl&#039; /&amp;gt;, we build that bibl&lt;br /&gt;
and process it like the others.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Expected Output ==&lt;br /&gt;
&amp;lt;nowiki&amp;gt; a &amp;lt;listBibl&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Known Restrictions or Problems ==&lt;br /&gt;
See TODO in the stylesheet.&lt;br /&gt;
&lt;br /&gt;
Please add any comments to the &#039;discussion&#039; tab. For payed support, please&lt;br /&gt;
mail the author (address within stylesheet).&lt;br /&gt;
&lt;br /&gt;
== Stylesheet ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!-- bibl2struct.xsl v. 08-03&lt;br /&gt;
  Transforms TEI &amp;lt;bibl&amp;gt;s into &amp;lt;biblstruct&amp;gt; bibliographies&lt;br /&gt;
  Author: (c) 2008 Ralf Stephan &amp;lt;ralf@ark.in-berlin.de&amp;gt;&lt;br /&gt;
  Published under GPL 2.0, see http://www.gnu.org/licenses/gpl-2.0.html&lt;br /&gt;
&lt;br /&gt;
  Description: the transform differentiates five major cases from&lt;br /&gt;
  the (non)-existence of &amp;lt;title&amp;gt;s of certain @level (a,j,m,s). The&lt;br /&gt;
    level in parens, e.g. (a) means &#039;level a or without/blank level&#039;.&lt;br /&gt;
    - &amp;lt;bibl&amp;gt; has (a)+m+s titles ==&amp;gt; excerpt from work in series&lt;br /&gt;
    - &amp;lt;bibl&amp;gt; has   (m)+s titles ==&amp;gt; work in series&lt;br /&gt;
    - &amp;lt;bibl&amp;gt; has   (a)+j titles ==&amp;gt; journal article&lt;br /&gt;
    - &amp;lt;bibl&amp;gt; has   (a)+m titles ==&amp;gt; excerpt from monograph&lt;br /&gt;
    - &amp;lt;bibl&amp;gt; has     (m) titles ==&amp;gt; monograph&lt;br /&gt;
&lt;br /&gt;
  When an element contains @corresp the text is taken from that id.&lt;br /&gt;
  When the document contains a &amp;lt;join result=&#039;bibl&#039; /&amp;gt;, we build that bibl&lt;br /&gt;
    and process it like the others.&lt;br /&gt;
&lt;br /&gt;
    History/Changelog:&lt;br /&gt;
    o 08-03: &lt;br /&gt;
      - removed &amp;lt;link&amp;gt; functionality&lt;br /&gt;
      - fixed &amp;lt;join&amp;gt; and @corresp matching priorities&lt;br /&gt;
      - @corresp didn&#039;t work at all&lt;br /&gt;
      - &amp;lt;edition&amp;gt; wasn&#039;t printed&lt;br /&gt;
      - journal refs without title weren&#039;t handled&lt;br /&gt;
      - no editor in simple monographs&lt;br /&gt;
      - better matching for elements that can occur outside &amp;lt;bibl&amp;gt;&lt;br /&gt;
      - added &amp;lt;corr&amp;gt; and &amp;lt;name&amp;gt; handling&lt;br /&gt;
    o 08-01: published&lt;br /&gt;
  TODO:&lt;br /&gt;
  =====&lt;br /&gt;
  o  &amp;lt;title type=&#039;alt&#039;&amp;gt; with &amp;lt;editor role=&#039;translator&#039;&amp;gt;&lt;br /&gt;
  o  assume from existing &amp;lt;author /&amp;gt; that author of ref is author of work?&lt;br /&gt;
  o  handle &amp;lt;bibl&amp;gt;...&amp;lt;series&amp;gt;...&amp;lt;/series&amp;gt;...&amp;lt;/bibl&amp;gt;&lt;br /&gt;
  o  what do we do we with refs without title?&lt;br /&gt;
  o  what if we have &amp;lt;author&amp;gt;&amp;lt;corr&amp;gt;...&amp;lt;/corr&amp;gt;&amp;lt;/author&amp;gt; ?&lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:stylesheet xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot; version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
    xmlns:exsl=&amp;quot;http://exslt.org/common&amp;quot; extension-element-prefixes=&amp;quot;exsl&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;&lt;br /&gt;
	    doctype-public=&amp;quot;-//TEI P5//DTD Main Document Type//EN&amp;quot; &lt;br /&gt;
	    doctype-system=&amp;quot;tei2.dtd&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Include a link to CSS --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:processing-instruction name=&amp;quot;xml-stylesheet&amp;quot;&amp;gt;href=&amp;quot;eb-bib.css&amp;quot; type=&amp;quot;text/css&amp;quot;&amp;lt;/xsl:processing-instruction&amp;gt;&lt;br /&gt;
      &amp;lt;listBibl&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates /&amp;gt;&lt;br /&gt;
      &amp;lt;/listBibl&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- remove all default attributes --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@status&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@default&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@org[.=&#039;uniform&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@sample[.=&#039;complete&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@part[.=&#039;N&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@direct[.=&#039;unspecified&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@targOrder[.=&#039;U&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@from[.=&#039;ROOT&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@anchored[.=&#039;yes&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@place[.=&#039;unspecified&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;teiHeader/@type&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- do not copy all CDATA, we copy explicitly later --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;text()&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- ignore teiHeader --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;teiHeader&#039; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- &amp;lt;bibl&amp;gt; without &amp;lt;title&amp;gt; does nothing --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[not(title)]&#039; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- handle &amp;lt;join result=&#039;bibl&#039;&amp;gt; here --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;join[@result=&amp;quot;bibl&amp;quot;]&#039; priority=&#039;1&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:variable name=&#039;joint&#039;&amp;gt;&lt;br /&gt;
        &amp;lt;bibl&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:call-template name=&#039;chomp-targets-recursively&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:with-param name=&#039;idstr&#039;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&#039;@targets&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:with-param&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
        &amp;lt;/bibl&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:apply-templates select=&#039;exsl:node-set($joint)//bibl&#039; /&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Calls copy-of with all ids in targets string --&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Partly stolen from http://wwbota.free.fr/XSLT_models/split-string.xslt--&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template name=&#039;chomp-targets-recursively&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:param name=&#039;idstr&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:variable name=&amp;quot;first&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name=&amp;quot;first0&amp;quot; select=&amp;quot;substring-before($idstr,&#039; &#039;)&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:when test=&amp;quot;$first0&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:copy-of select=&amp;quot;$first0&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:copy-of select=&amp;quot;$idstr&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:if test=&amp;quot;string-length($first)&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:call-template name=&#039;chomp-targets-recursively&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:with-param name=&amp;quot;idstr&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;substring-after($idstr,&#039; &#039;)&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:with-param&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:copy-of select=&#039;//*[@id=$first]&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Handle bibl with elements having @corresp attribute --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[*[@corresp]]&#039; priority=&#039;1&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:variable name=&#039;tmp1&#039;&amp;gt;&lt;br /&gt;
        &amp;lt;bibl&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;*&#039; /&amp;gt; &amp;lt;!--corresp is handled --&amp;gt;&lt;br /&gt;
        &amp;lt;/bibl&amp;gt;                              &amp;lt;!--at element level   --&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:apply-templates select=&#039;exsl:node-set($tmp1)//bibl&#039; /&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--===================================--&amp;gt;&lt;br /&gt;
    &amp;lt;!-- complete bibl with titles (a)+m+s --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[(title[@level=&amp;quot;a&amp;quot;] or title[@level=&amp;quot;&amp;quot;] or title[not(@level)]) and title[@level=&amp;quot;m&amp;quot;] and title[@level=&amp;quot;s&amp;quot;]]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;biblStruct&amp;gt;&lt;br /&gt;
        &amp;lt;analytic&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;author&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[(@level=&amp;quot;a&amp;quot; or @level=&amp;quot;&amp;quot; or not(@level))]&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/analytic&amp;gt;&lt;br /&gt;
        &amp;lt;monogr&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;m&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;series&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;s&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;date|edition|publisher|pubPlace|biblScope&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;publisher&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;pubPlace&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;edition&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;date&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;biblScope&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/imprint&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;/series&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;note&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/biblStruct&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- complete bibl with titles (m)+s --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[not(title[@level=&amp;quot;a&amp;quot;]) and (title[@level=&amp;quot;m&amp;quot;] or title[@level=&amp;quot;&amp;quot;] or title[not(@level)]) and title[@level=&amp;quot;s&amp;quot;]]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;biblStruct&amp;gt;&lt;br /&gt;
        &amp;lt;monogr&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;author&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;m&amp;quot; or @level=&amp;quot;&amp;quot; or not(@level)]&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;date|edition|publisher|pubPlace|biblScope&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;publisher&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;pubPlace&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;edition&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;date&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;biblScope&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/imprint&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;series&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;s&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/series&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;note&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/biblStruct&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- bibl with title (a)+j --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[not(title[@level=&amp;quot;m&amp;quot;]) and not(title[@level=&amp;quot;s&amp;quot;]) and title[@level=&amp;quot;j&amp;quot;]]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;biblStruct&amp;gt;&lt;br /&gt;
        &amp;lt;analytic&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;author&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[not(@level) or @level=&amp;quot;a&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/analytic&amp;gt;&lt;br /&gt;
        &amp;lt;monogr&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;j&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;date|publisher|pubPlace|biblScope&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;publisher&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;pubPlace&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;date&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;biblScope&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/imprint&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;note&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/biblStruct&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- complete bibl with title (a)+m --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[title[not(@level) or @level=&amp;quot;a&amp;quot;] and title[@level=&amp;quot;m&amp;quot;]]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;biblStruct&amp;gt;&lt;br /&gt;
        &amp;lt;analytic&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;author&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[not(@level) or @level=&amp;quot;a&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/analytic&amp;gt;&lt;br /&gt;
        &amp;lt;monogr&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;m&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;date|edition|publisher|pubPlace|biblScope&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;publisher&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;pubPlace&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;edition&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;date&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;biblScope&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/imprint&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;note&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/biblStruct&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- bibl with either title m only or blank only, all without a,j,s --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[(not(title[@level=&amp;quot;a&amp;quot;]) and not(title[@level=&amp;quot;j&amp;quot;]) and not(title[@level=&amp;quot;s&amp;quot;])) and ((title[@level=&amp;quot;m&amp;quot;] and not(title[not(@level)])) or (not(title[@level=&amp;quot;m&amp;quot;]) and title[not(@level)]))]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;biblStruct&amp;gt;&lt;br /&gt;
        &amp;lt;monogr&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;author&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;date|edition|publisher|pubPlace|biblScope&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;publisher&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;pubPlace&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;edition&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;date&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;biblScope&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/imprint&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;note&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/biblStruct&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--=========================================--&amp;gt;&lt;br /&gt;
    &amp;lt;!-- all elements except (title outside of bibl): do deep copy --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@* | author | title [ancestor::bibl] | editor | &lt;br /&gt;
      biblScope | edition | date[ancestor::bibl] | publisher | pubPlace | &lt;br /&gt;
      note[ancestor::bibl] | corr | name[ancestor::bibl]&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:when test=&#039;@corresp&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:variable name=&#039;tmp&#039;&amp;gt;&lt;br /&gt;
            &amp;lt;bibl&amp;gt; &lt;br /&gt;
              &amp;lt;xsl:copy&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:copy-of select=&#039;id(@corresp)/@*&#039; /&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:copy-of select=&#039;id(@corresp)/node()&#039; /&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:copy&amp;gt;&lt;br /&gt;
            &amp;lt;/bibl&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;exsl:node-set($tmp)//bibl/*&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:copy&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&amp;quot;@*[not(name()=&#039;TEIform&#039;)]|node()|text()&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:copy&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl/series&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:text&amp;gt;seriesabc&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:copy-of select=&#039;*/node()&#039; /&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- copy CDATA within elements except titles --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;bibl/text() | author/text() | editor/text() | &lt;br /&gt;
      //bibl//title/text() | biblScope/text() | //bibl//date/text() | &lt;br /&gt;
      edition/text() | pubPlace/text() | publisher/text() | //bibl//note/text() &lt;br /&gt;
      | //bibl//corr/text() | //bibl//name/text()&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:copy /&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:XSLT]]&lt;br /&gt;
[[Category:XSLT:1.0]]&lt;/div&gt;</summary>
		<author><name>Rwst</name></author>
	</entry>
	<entry>
		<id>https://wiki.tei-c.org/index.php?title=Bibl2struct.xslt&amp;diff=4247</id>
		<title>Bibl2struct.xslt</title>
		<link rel="alternate" type="text/html" href="https://wiki.tei-c.org/index.php?title=Bibl2struct.xslt&amp;diff=4247"/>
		<updated>2008-03-18T10:13:55Z</updated>

		<summary type="html">&lt;p&gt;Rwst: /* Stylesheet */ new version 08-03&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Transforms TEI &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt;s into &amp;lt;biblStruct&amp;gt; bibliographies.&lt;br /&gt;
Ignores all other content. Produces a &amp;lt;listBibl&amp;gt;&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Required Input ==&lt;br /&gt;
&lt;br /&gt;
This document will take any XML file, not just TEI XML, and processes all&lt;br /&gt;
&#039;&#039;complete&#039;&#039; &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; bibliographies into equivalent &amp;lt;biblStruct&amp;gt;s.&lt;br /&gt;
&lt;br /&gt;
The transform differentiates five major cases from&lt;br /&gt;
the (non)-existence of &amp;lt;title&amp;gt;s of certain @level (a,j,m,s). The&lt;br /&gt;
level in parens, e.g. (a) means &#039;level a or without/blank level&#039;.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; has (a)+m+s titles ==&amp;gt; excerpt from work in series&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; has   (m)+s titles ==&amp;gt; work in series&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; has   (a)+j titles ==&amp;gt; journal article&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; has   (a)+m titles ==&amp;gt; excerpt from monograph&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; has     (m) titles ==&amp;gt; monograph&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;When an element contains @corresp the text is taken from that id.&lt;br /&gt;
When the author is missing and &amp;lt;bibl&amp;gt; has an id, then we look for&lt;br /&gt;
the id in &amp;lt;link&amp;gt;s and, when found, for authors therein.&lt;br /&gt;
When the document contains a &amp;lt;join result=&#039;bibl&#039; /&amp;gt;, we build that bibl&lt;br /&gt;
and process it like the others.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Expected Output ==&lt;br /&gt;
&amp;lt;nowiki&amp;gt; a &amp;lt;listBibl&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Known Restrictions or Problems ==&lt;br /&gt;
See TODO in the stylesheet.&lt;br /&gt;
&lt;br /&gt;
Please add any comments to the &#039;discussion&#039; tab. For payed support, please&lt;br /&gt;
mail the author (address within stylesheet).&lt;br /&gt;
&lt;br /&gt;
== Stylesheet ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!-- bibl2struct.xsl v. 08-03&lt;br /&gt;
  Transforms TEI &amp;lt;bibl&amp;gt;s into &amp;lt;biblstruct&amp;gt; bibliographies&lt;br /&gt;
  Author: (c) 2008 Ralf Stephan &amp;lt;ralf@ark.in-berlin.de&amp;gt;&lt;br /&gt;
  Published under GPL 2.0, see http://www.gnu.org/licenses/gpl-2.0.html&lt;br /&gt;
&lt;br /&gt;
  Description: the transform differentiates five major cases from&lt;br /&gt;
  the (non)-existence of &amp;lt;title&amp;gt;s of certain @level (a,j,m,s). The&lt;br /&gt;
    level in parens, e.g. (a) means &#039;level a or without/blank level&#039;.&lt;br /&gt;
    - &amp;lt;bibl&amp;gt; has (a)+m+s titles ==&amp;gt; excerpt from work in series&lt;br /&gt;
    - &amp;lt;bibl&amp;gt; has   (m)+s titles ==&amp;gt; work in series&lt;br /&gt;
    - &amp;lt;bibl&amp;gt; has   (a)+j titles ==&amp;gt; journal article&lt;br /&gt;
    - &amp;lt;bibl&amp;gt; has   (a)+m titles ==&amp;gt; excerpt from monograph&lt;br /&gt;
    - &amp;lt;bibl&amp;gt; has     (m) titles ==&amp;gt; monograph&lt;br /&gt;
&lt;br /&gt;
  When an element contains @corresp the text is taken from that id.&lt;br /&gt;
  When the document contains a &amp;lt;join result=&#039;bibl&#039; /&amp;gt;, we build that bibl&lt;br /&gt;
    and process it like the others.&lt;br /&gt;
&lt;br /&gt;
    History/Changelog:&lt;br /&gt;
    o 08-03: &lt;br /&gt;
      - removed &amp;lt;link&amp;gt; functionality&lt;br /&gt;
      - fixed &amp;lt;join&amp;gt; and @corresp matching priorities&lt;br /&gt;
      - @corresp didn&#039;t work at all&lt;br /&gt;
      - &amp;lt;edition&amp;gt; wasn&#039;t printed&lt;br /&gt;
      - journal refs without title weren&#039;t handled&lt;br /&gt;
      - no editor in simple monographs&lt;br /&gt;
      - better matching for elements that can occur outside &amp;lt;bibl&amp;gt;&lt;br /&gt;
      - added &amp;lt;corr&amp;gt; and &amp;lt;name&amp;gt; handling&lt;br /&gt;
    o 08-01: published&lt;br /&gt;
  TODO:&lt;br /&gt;
  =====&lt;br /&gt;
  o  &amp;lt;title type=&#039;alt&#039;&amp;gt; with &amp;lt;editor role=&#039;translator&#039;&amp;gt;&lt;br /&gt;
  o  assume from existing &amp;lt;author /&amp;gt; that author of ref is author of work?&lt;br /&gt;
  o  handle &amp;lt;bibl&amp;gt;...&amp;lt;series&amp;gt;...&amp;lt;/series&amp;gt;...&amp;lt;/bibl&amp;gt;&lt;br /&gt;
  o  what do we do we with refs without title?&lt;br /&gt;
  o  what if we have &amp;lt;author&amp;gt;&amp;lt;corr&amp;gt;...&amp;lt;/corr&amp;gt;&amp;lt;/author&amp;gt; ?&lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:stylesheet xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot; version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
    xmlns:exsl=&amp;quot;http://exslt.org/common&amp;quot; extension-element-prefixes=&amp;quot;exsl&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;&lt;br /&gt;
	    doctype-public=&amp;quot;-//TEI P5//DTD Main Document Type//EN&amp;quot; &lt;br /&gt;
	    doctype-system=&amp;quot;tei2.dtd&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Include a link to CSS --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:processing-instruction name=&amp;quot;xml-stylesheet&amp;quot;&amp;gt;href=&amp;quot;eb-bib.css&amp;quot; type=&amp;quot;text/css&amp;quot;&amp;lt;/xsl:processing-instruction&amp;gt;&lt;br /&gt;
      &amp;lt;listBibl&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates /&amp;gt;&lt;br /&gt;
      &amp;lt;/listBibl&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- remove all default attributes --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@status&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@default&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@org[.=&#039;uniform&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@sample[.=&#039;complete&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@part[.=&#039;N&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@direct[.=&#039;unspecified&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@targOrder[.=&#039;U&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@from[.=&#039;ROOT&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@anchored[.=&#039;yes&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@place[.=&#039;unspecified&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;teiHeader/@type&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- do not copy all CDATA, we copy explicitly later --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;text()&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- ignore teiHeader --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;teiHeader&#039; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- &amp;lt;bibl&amp;gt; without &amp;lt;title&amp;gt; does nothing --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[not(title)]&#039; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- handle &amp;lt;join result=&#039;bibl&#039;&amp;gt; here --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;join[@result=&amp;quot;bibl&amp;quot;]&#039; priority=&#039;1&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:variable name=&#039;joint&#039;&amp;gt;&lt;br /&gt;
        &amp;lt;bibl&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:call-template name=&#039;chomp-targets-recursively&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:with-param name=&#039;idstr&#039;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&#039;@targets&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:with-param&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
        &amp;lt;/bibl&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:apply-templates select=&#039;exsl:node-set($joint)//bibl&#039; /&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Calls copy-of with all ids in targets string --&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Partly stolen from http://wwbota.free.fr/XSLT_models/split-string.xslt--&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template name=&#039;chomp-targets-recursively&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:param name=&#039;idstr&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:variable name=&amp;quot;first&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name=&amp;quot;first0&amp;quot; select=&amp;quot;substring-before($idstr,&#039; &#039;)&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:when test=&amp;quot;$first0&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:copy-of select=&amp;quot;$first0&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:copy-of select=&amp;quot;$idstr&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:if test=&amp;quot;string-length($first)&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:call-template name=&#039;chomp-targets-recursively&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:with-param name=&amp;quot;idstr&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;substring-after($idstr,&#039; &#039;)&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:with-param&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:copy-of select=&#039;//*[@id=$first]&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Handle bibl with elements having @corresp attribute --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[*[@corresp]]&#039; priority=&#039;1&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:variable name=&#039;tmp1&#039;&amp;gt;&lt;br /&gt;
        &amp;lt;bibl&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;*&#039; /&amp;gt; &amp;lt;!--corresp is handled --&amp;gt;&lt;br /&gt;
        &amp;lt;/bibl&amp;gt;                              &amp;lt;!--at element level   --&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:apply-templates select=&#039;exsl:node-set($tmp1)//bibl&#039; /&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--===================================--&amp;gt;&lt;br /&gt;
    &amp;lt;!-- complete bibl with titles (a)+m+s --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[(title[@level=&amp;quot;a&amp;quot;] or title[@level=&amp;quot;&amp;quot;] or title[not(@level)]) and title[@level=&amp;quot;m&amp;quot;] and title[@level=&amp;quot;s&amp;quot;]]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;biblStruct&amp;gt;&lt;br /&gt;
        &amp;lt;analytic&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;author&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[(@level=&amp;quot;a&amp;quot; or @level=&amp;quot;&amp;quot; or not(@level))]&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/analytic&amp;gt;&lt;br /&gt;
        &amp;lt;monogr&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;m&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;series&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;s&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;date|edition|publisher|pubPlace|biblScope&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;publisher&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;pubPlace&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;edition&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;date&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;biblScope&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/imprint&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;/series&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;note&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/biblStruct&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- complete bibl with titles (m)+s --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[not(title[@level=&amp;quot;a&amp;quot;]) and (title[@level=&amp;quot;m&amp;quot;] or title[@level=&amp;quot;&amp;quot;] or title[not(@level)]) and title[@level=&amp;quot;s&amp;quot;]]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;biblStruct&amp;gt;&lt;br /&gt;
        &amp;lt;monogr&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;author&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;m&amp;quot; or @level=&amp;quot;&amp;quot; or not(@level)]&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;date|edition|publisher|pubPlace|biblScope&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;publisher&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;pubPlace&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;edition&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;date&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;biblScope&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/imprint&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;series&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;s&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/series&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;note&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/biblStruct&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- bibl with title (a)+j --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[not(title[@level=&amp;quot;m&amp;quot;]) and not(title[@level=&amp;quot;s&amp;quot;]) and title[@level=&amp;quot;j&amp;quot;]]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;biblStruct&amp;gt;&lt;br /&gt;
        &amp;lt;analytic&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;author&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[not(@level) or @level=&amp;quot;a&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/analytic&amp;gt;&lt;br /&gt;
        &amp;lt;monogr&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;j&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;date|publisher|pubPlace|biblScope&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;publisher&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;pubPlace&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;date&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;biblScope&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/imprint&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;note&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/biblStruct&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- complete bibl with title (a)+m --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[title[not(@level) or @level=&amp;quot;a&amp;quot;] and title[@level=&amp;quot;m&amp;quot;]]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;biblStruct&amp;gt;&lt;br /&gt;
        &amp;lt;analytic&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;author&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[not(@level) or @level=&amp;quot;a&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/analytic&amp;gt;&lt;br /&gt;
        &amp;lt;monogr&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;m&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;date|edition|publisher|pubPlace|biblScope&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;publisher&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;pubPlace&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;edition&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;date&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;biblScope&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/imprint&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;note&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/biblStruct&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- bibl with either title m only or blank only, all without a,j,s --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[(not(title[@level=&amp;quot;a&amp;quot;]) and not(title[@level=&amp;quot;j&amp;quot;]) and not(title[@level=&amp;quot;s&amp;quot;])) and ((title[@level=&amp;quot;m&amp;quot;] and not(title[not(@level)])) or (not(title[@level=&amp;quot;m&amp;quot;]) and title[not(@level)]))]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;biblStruct&amp;gt;&lt;br /&gt;
        &amp;lt;monogr&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;author&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;date|edition|publisher|pubPlace|biblScope&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;publisher&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;pubPlace&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;edition&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;date&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;biblScope&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/imprint&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;note&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/biblStruct&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--=========================================--&amp;gt;&lt;br /&gt;
    &amp;lt;!-- all elements except (title outside of bibl): do deep copy --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@* | author | title [ancestor::bibl] | editor | &lt;br /&gt;
      biblScope | edition | date[ancestor::bibl] | publisher | pubPlace | &lt;br /&gt;
      note[ancestor::bibl] | corr | name[ancestor::bibl]&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:when test=&#039;@corresp&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:variable name=&#039;tmp&#039;&amp;gt;&lt;br /&gt;
            &amp;lt;bibl&amp;gt; &lt;br /&gt;
              &amp;lt;xsl:copy&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:copy-of select=&#039;id(@corresp)/@*&#039; /&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:copy-of select=&#039;id(@corresp)/node()&#039; /&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:copy&amp;gt;&lt;br /&gt;
            &amp;lt;/bibl&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;exsl:node-set($tmp)//bibl/*&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:copy&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&amp;quot;@*[not(name()=&#039;TEIform&#039;)]|node()|text()&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:copy&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl/series&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:text&amp;gt;seriesabc&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:copy-of select=&#039;*/node()&#039; /&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- copy CDATA within elements except titles --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;bibl/text() | author/text() | editor/text() | &lt;br /&gt;
      //bibl//title/text() | biblScope/text() | //bibl//date/text() | &lt;br /&gt;
      edition/text() | pubPlace/text() | publisher/text() | //bibl//note/text() &lt;br /&gt;
      | //bibl//corr/text() | //bibl//name/text()&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:copy /&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:XSLT]]&lt;br /&gt;
[[Category:XSLT:1.0]]&lt;/div&gt;</summary>
		<author><name>Rwst</name></author>
	</entry>
	<entry>
		<id>https://wiki.tei-c.org/index.php?title=Bibl2struct.xslt&amp;diff=4194</id>
		<title>Bibl2struct.xslt</title>
		<link rel="alternate" type="text/html" href="https://wiki.tei-c.org/index.php?title=Bibl2struct.xslt&amp;diff=4194"/>
		<updated>2008-02-05T11:02:30Z</updated>

		<summary type="html">&lt;p&gt;Rwst: /* Stylesheet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Transforms TEI &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt;s into &amp;lt;biblstruct&amp;gt; bibliographies.&lt;br /&gt;
Ignores all other content. Produces a &amp;lt;listBibl&amp;gt;&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Required Input ==&lt;br /&gt;
&lt;br /&gt;
This document will take any XML file, not just TEI XML, and processes all&lt;br /&gt;
&#039;&#039;complete&#039;&#039; &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; bibliographies into equivalent &amp;lt;biblStructs&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The transform differentiates five major cases from&lt;br /&gt;
the (non)-existence of &amp;lt;title&amp;gt;s of certain @level (a,j,m,s). The&lt;br /&gt;
level in parens, e.g. (a) means &#039;level a or without/blank level&#039;.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; has (a)+m+s titles ==&amp;gt; excerpt from work in series&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; has   (m)+s titles ==&amp;gt; work in series&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; has   (a)+j titles ==&amp;gt; journal article&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; has   (a)+m titles ==&amp;gt; excerpt from monograph&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; has     (m) titles ==&amp;gt; monograph&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;When an element contains @corresp the text is taken from that id.&lt;br /&gt;
When the author is missing and &amp;lt;bibl&amp;gt; has an id, then we look for&lt;br /&gt;
the id in &amp;lt;link&amp;gt;s and, when found, for authors therein.&lt;br /&gt;
When the document contains a &amp;lt;join result=&#039;bibl&#039; /&amp;gt;, we build that bibl&lt;br /&gt;
and process it like the others.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Expected Output ==&lt;br /&gt;
&amp;lt;nowiki&amp;gt; a &amp;lt;listBibl&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Known Restrictions or Problems ==&lt;br /&gt;
See TODO in the stylesheet.&lt;br /&gt;
&lt;br /&gt;
Please add any comments to the &#039;discussion&#039; tab. For payed support, please&lt;br /&gt;
mail the author (address within stylesheet).&lt;br /&gt;
&lt;br /&gt;
== Stylesheet ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!-- bibl2struct.xsl&lt;br /&gt;
  Transforms TEI &amp;lt;bibl&amp;gt;s into &amp;lt;biblstruct&amp;gt; bibliographies. Version 08-01.&lt;br /&gt;
  Author: (c) 2008 Ralf Stephan &amp;lt;ralf@ark.in-berlin.de&amp;gt;&lt;br /&gt;
  Published under GPL 2.0, see http://www.gnu.org/licenses/gpl-2.0.html&lt;br /&gt;
&lt;br /&gt;
  TODO:&lt;br /&gt;
  =====&lt;br /&gt;
  o  if the bibl has an @id and an author, we don&#039;t look further but&lt;br /&gt;
     there could be more authors &amp;lt;link&amp;gt;ed&lt;br /&gt;
  o  &amp;lt;title type=&#039;alt&#039;&amp;gt; with &amp;lt;editor role=&#039;translator&#039;&amp;gt;&lt;br /&gt;
  o  assume from existing &amp;lt;author /&amp;gt; that author of ref is author of work?&lt;br /&gt;
  o  handle &amp;lt;bibl&amp;gt;...&amp;lt;series&amp;gt;...&amp;lt;/series&amp;gt;...&amp;lt;/bibl&amp;gt;&lt;br /&gt;
  o  what do we do we with refs without title?&lt;br /&gt;
  o  what if we have &amp;lt;author&amp;gt;&amp;lt;corr&amp;gt;...&amp;lt;/corr&amp;gt;&amp;lt;/author&amp;gt; ?&lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:stylesheet xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot; version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
    xmlns:exsl=&amp;quot;http://exslt.org/common&amp;quot; extension-element-prefixes=&amp;quot;exsl&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;&lt;br /&gt;
	    doctype-public=&amp;quot;-//TEI P5//DTD Main Document Type//EN&amp;quot; &lt;br /&gt;
	    doctype-system=&amp;quot;tei2.dtd&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Include a link to CSS --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:processing-instruction name=&amp;quot;xml-stylesheet&amp;quot;&amp;gt;href=&amp;quot;your.css&amp;quot; type=&amp;quot;text/css&amp;quot;&amp;lt;/xsl:processing-instruction&amp;gt;&lt;br /&gt;
      &amp;lt;listBibl&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates /&amp;gt;&lt;br /&gt;
      &amp;lt;/listBibl&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- remove all default attributes --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@status&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@default&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@org[.=&#039;uniform&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@sample[.=&#039;complete&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@part[.=&#039;N&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@direct[.=&#039;unspecified&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@targOrder[.=&#039;U&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@from[.=&#039;ROOT&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@anchored[.=&#039;yes&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@place[.=&#039;unspecified&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;teiHeader/@type&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- do not copy all CDATA, we copy explicitly later --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;text()&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- ignore teiHeader --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;teiHeader&#039; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- &amp;lt;bibl&amp;gt; without &amp;lt;title&amp;gt; does nothing --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[not(title)]&#039; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- handle &amp;lt;join result=&#039;bibl&#039;&amp;gt; here --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;join[@result=&amp;quot;bibl&amp;quot;]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:variable name=&#039;joint&#039;&amp;gt;&lt;br /&gt;
        &amp;lt;bibl&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:call-template name=&#039;chomp-targets-recursively&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:with-param name=&#039;idstr&#039;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&#039;@targets&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:with-param&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
        &amp;lt;/bibl&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:apply-templates select=&#039;exsl:node-set($joint)//bibl&#039; /&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Calls copy-of with all ids in targets string --&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Partly stolen from http://wwbota.free.fr/XSLT_models/split-string.xslt--&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template name=&#039;chomp-targets-recursively&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:param name=&#039;idstr&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:variable name=&amp;quot;first&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name=&amp;quot;first0&amp;quot; select=&amp;quot;substring-before($idstr,&#039; &#039;)&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:when test=&amp;quot;$first0&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:copy-of select=&amp;quot;$first0&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:copy-of select=&amp;quot;$idstr&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:if test=&amp;quot;string-length($first)&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:call-template name=&#039;chomp-targets-recursively&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:with-param name=&amp;quot;idstr&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;substring-after($idstr,&#039; &#039;)&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:with-param&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:copy-of select=&#039;//*[@id=$first]&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--===================================--&amp;gt;&lt;br /&gt;
    &amp;lt;!-- complete bibl with titles (a)+m+s --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[(title[@level=&amp;quot;a&amp;quot;] or title[@level=&amp;quot;&amp;quot;] or title[not(@level)]) and title[@level=&amp;quot;m&amp;quot;] and title[@level=&amp;quot;s&amp;quot;]]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;biblStruct&amp;gt;&lt;br /&gt;
        &amp;lt;analytic&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:when test=&#039;author&#039;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select=&#039;author&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:call-template name=&#039;authors&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[(@level=&amp;quot;a&amp;quot; or @level=&amp;quot;&amp;quot; or not(@level))]&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/analytic&amp;gt;&lt;br /&gt;
        &amp;lt;monogr&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;m&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;series&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;s&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;date|publisher|pubPlace|biblScope&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;publisher&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;pubPlace&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;edition&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;date&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;biblScope&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/imprint&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;/series&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;note&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/biblStruct&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- complete bibl with titles (m)+s --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[not(title[@level=&amp;quot;a&amp;quot;]) and (title[@level=&amp;quot;m&amp;quot;] or title[@level=&amp;quot;&amp;quot;] or title[not(@level)]) and title[@level=&amp;quot;s&amp;quot;]]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;biblStruct&amp;gt;&lt;br /&gt;
        &amp;lt;monogr&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:when test=&#039;author&#039;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select=&#039;author&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:call-template name=&#039;authors&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;m&amp;quot; or @level=&amp;quot;&amp;quot; or not(@level)]&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;date|publisher|pubPlace|biblScope&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;publisher&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;pubPlace&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;edition&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;date&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;biblScope&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/imprint&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;series&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;s&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/series&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;note&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/biblStruct&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- bibl with title (a)+j --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[title[not(@level) or @level=&amp;quot;a&amp;quot;] and title[@level=&amp;quot;j&amp;quot;]]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;biblStruct&amp;gt;&lt;br /&gt;
        &amp;lt;analytic&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:when test=&#039;author&#039;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select=&#039;author&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:call-template name=&#039;authors&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[not(@level) or @level=&amp;quot;a&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/analytic&amp;gt;&lt;br /&gt;
        &amp;lt;monogr&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;j&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;date|publisher|pubPlace|biblScope&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;publisher&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;pubPlace&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;edition&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;date&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;biblScope&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/imprint&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;note&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/biblStruct&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- complete bibl with title (a)+m --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[title[not(@level) or @level=&amp;quot;a&amp;quot;] and title[@level=&amp;quot;m&amp;quot;]]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;biblStruct&amp;gt;&lt;br /&gt;
        &amp;lt;analytic&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:when test=&#039;author&#039;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select=&#039;author&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:call-template name=&#039;authors&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[not(@level) or @level=&amp;quot;a&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/analytic&amp;gt;&lt;br /&gt;
        &amp;lt;monogr&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;m&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;date|publisher|pubPlace|biblScope&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;publisher&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;pubPlace&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;edition&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;date&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;biblScope&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/imprint&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;note&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/biblStruct&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- bibl with either title m only or blank only, all without a,j,s --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[(not(title[@level=&amp;quot;a&amp;quot;]) and not(title[@level=&amp;quot;j&amp;quot;]) and not(title[@level=&amp;quot;s&amp;quot;])) and ((title[@level=&amp;quot;m&amp;quot;] and not(title[not(@level)])) or (not(title[@level=&amp;quot;m&amp;quot;]) and title[not(@level)]))]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;biblStruct&amp;gt;&lt;br /&gt;
        &amp;lt;monogr&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:when test=&#039;author&#039;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select=&#039;author&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:call-template name=&#039;authors&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;date|publisher|pubPlace|biblScope&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;publisher&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;pubPlace&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;edition&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;date&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;biblScope&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/imprint&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;note&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/biblStruct&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- incomplete bibl with title only! the bibl should have an @id --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template name=&#039;authors&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:if test=&#039;not(@id)&#039;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:text&amp;gt;ERROR: bibl has neither author nor id! &amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:if test=&#039;@id&#039;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name=&#039;ti&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:value-of select=&#039;@id&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&#039;//link&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;contains(@targets,$ti)&#039;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:call-template name=&#039;recursively-apply-first-of&#039;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:with-param name=&#039;idstr&#039;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&#039;@targets&#039; /&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:with-param&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Calls all author/name templates with id in given param string --&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Partly stolen from http://wwbota.free.fr/XSLT_models/split-string.xslt--&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template name=&#039;recursively-apply-first-of&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:param name=&#039;idstr&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:variable name=&amp;quot;first&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name=&amp;quot;first0&amp;quot; select=&amp;quot;substring-before($idstr,&#039; &#039;)&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:when test=&amp;quot;$first0&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:copy-of select=&amp;quot;$first0&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:copy-of select=&amp;quot;$idstr&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:if test=&amp;quot;string-length($first)&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:call-template name=&#039;recursively-apply-first-of&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:with-param name=&amp;quot;idstr&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;substring-after($idstr,&#039; &#039;)&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:with-param&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;//author[@id=$first]|//name[@id=$first]&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--=========================================--&amp;gt;&lt;br /&gt;
    &amp;lt;!-- all elements except title: do deep copy --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@* | author | title [name(..)=&#039;bibl&#039;] | editor | &lt;br /&gt;
      biblScope | edition | date[name(..)=&#039;bibl&#039;] | publisher | pubPlace | &lt;br /&gt;
      note[name(..)=&#039;bibl&#039;]&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:when test=&#039;@corresp&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;id(@corresp)&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:copy&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&amp;quot;@*[not(name()=&#039;TEIform&#039;)]|node()|text()&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:copy&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl/series&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:text&amp;gt;abc&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:copy-of select=&#039;*/node()&#039; /&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- copy CDATA within elements except titles --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;bibl/text()|author/text()|editor/text()|title[name(..)=&#039;bibl&#039;]/text()|biblScope/text()|date[name(..)=&#039;bibl&#039;]/text()|edition/text()|pubPlace/text()|publisher/text()|note[name(..)=&#039;bibl&#039;]/text()&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:copy /&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:XSLT]]&lt;br /&gt;
[[Category:XSLT:1.0]]&lt;/div&gt;</summary>
		<author><name>Rwst</name></author>
	</entry>
	<entry>
		<id>https://wiki.tei-c.org/index.php?title=Bibl2struct.xslt&amp;diff=4193</id>
		<title>Bibl2struct.xslt</title>
		<link rel="alternate" type="text/html" href="https://wiki.tei-c.org/index.php?title=Bibl2struct.xslt&amp;diff=4193"/>
		<updated>2008-02-05T10:56:48Z</updated>

		<summary type="html">&lt;p&gt;Rwst: /* Stylesheet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Transforms TEI &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt;s into &amp;lt;biblstruct&amp;gt; bibliographies.&lt;br /&gt;
Ignores all other content. Produces a &amp;lt;listBibl&amp;gt;&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Required Input ==&lt;br /&gt;
&lt;br /&gt;
This document will take any XML file, not just TEI XML, and processes all&lt;br /&gt;
&#039;&#039;complete&#039;&#039; &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; bibliographies into equivalent &amp;lt;biblStructs&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The transform differentiates five major cases from&lt;br /&gt;
the (non)-existence of &amp;lt;title&amp;gt;s of certain @level (a,j,m,s). The&lt;br /&gt;
level in parens, e.g. (a) means &#039;level a or without/blank level&#039;.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; has (a)+m+s titles ==&amp;gt; excerpt from work in series&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; has   (m)+s titles ==&amp;gt; work in series&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; has   (a)+j titles ==&amp;gt; journal article&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; has   (a)+m titles ==&amp;gt; excerpt from monograph&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; has     (m) titles ==&amp;gt; monograph&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;When an element contains @corresp the text is taken from that id.&lt;br /&gt;
When the author is missing and &amp;lt;bibl&amp;gt; has an id, then we look for&lt;br /&gt;
the id in &amp;lt;link&amp;gt;s and, when found, for authors therein.&lt;br /&gt;
When the document contains a &amp;lt;join result=&#039;bibl&#039; /&amp;gt;, we build that bibl&lt;br /&gt;
and process it like the others.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Expected Output ==&lt;br /&gt;
&amp;lt;nowiki&amp;gt; a &amp;lt;listBibl&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Known Restrictions or Problems ==&lt;br /&gt;
See TODO in the stylesheet.&lt;br /&gt;
&lt;br /&gt;
Please add any comments to the &#039;discussion&#039; tab. For payed support, please&lt;br /&gt;
mail the author (address within stylesheet).&lt;br /&gt;
&lt;br /&gt;
== Stylesheet ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!-- bibl2struct.xsl&lt;br /&gt;
  Transforms TEI &amp;lt;bibl&amp;gt;s into &amp;lt;biblstruct&amp;gt; bibliographies. Version 08-01.&lt;br /&gt;
  Author: (c) 2008 Ralf Stephan &amp;lt;ralf@ark.in-berlin.de&amp;gt;&lt;br /&gt;
  Published under GPL 2.0, see http://www.gnu.org/licenses/gpl-2.0.html&lt;br /&gt;
&lt;br /&gt;
  TODO:&lt;br /&gt;
  =====&lt;br /&gt;
  o  if the bibl has an @id and an author, we don&#039;t look further but&lt;br /&gt;
     there could be more authors &amp;lt;link&amp;gt;ed&lt;br /&gt;
  o  &amp;lt;title type=&#039;alt&#039;&amp;gt; with &amp;lt;editor role=&#039;translator&#039;&amp;gt;&lt;br /&gt;
  o  assume from existing &amp;lt;author /&amp;gt; that author of ref is author of work?&lt;br /&gt;
  o  handle &amp;lt;bibl&amp;gt;...&amp;lt;series&amp;gt;...&amp;lt;/series&amp;gt;...&amp;lt;/bibl&amp;gt;&lt;br /&gt;
  o  what do we do we with refs without title?&lt;br /&gt;
  o  what if we have &amp;lt;author&amp;gt;&amp;lt;corr&amp;gt;...&amp;lt;/corr&amp;gt;&amp;lt;/author&amp;gt; ?&lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:stylesheet xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot; version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
    xmlns:exsl=&amp;quot;http://exslt.org/common&amp;quot; extension-element-prefixes=&amp;quot;exsl&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;&lt;br /&gt;
	    doctype-public=&amp;quot;-//TEI P5//DTD Main Document Type//EN&amp;quot; &lt;br /&gt;
	    doctype-system=&amp;quot;tei2.dtd&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Include a link to CSS --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:processing-instruction name=&amp;quot;xml-stylesheet&amp;quot;&amp;gt;href=&amp;quot;eb-bib.css&amp;quot; type=&amp;quot;text/css&amp;quot;&amp;lt;/xsl:processing-instruction&amp;gt;&lt;br /&gt;
      &amp;lt;listBibl&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates /&amp;gt;&lt;br /&gt;
      &amp;lt;/listBibl&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- remove all default attributes --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@status&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@default&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@org[.=&#039;uniform&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@sample[.=&#039;complete&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@part[.=&#039;N&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@direct[.=&#039;unspecified&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@targOrder[.=&#039;U&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@from[.=&#039;ROOT&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@anchored[.=&#039;yes&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@place[.=&#039;unspecified&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;teiHeader/@type&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- do not copy all CDATA, we copy explicitly later --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;text()&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- ignore teiHeader --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;teiHeader&#039; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- &amp;lt;bibl&amp;gt; without &amp;lt;title&amp;gt; does nothing --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[not(title)]&#039; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- handle &amp;lt;join result=&#039;bibl&#039;&amp;gt; here --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;join[@result=&amp;quot;bibl&amp;quot;]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:variable name=&#039;joint&#039;&amp;gt;&lt;br /&gt;
        &amp;lt;bibl&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:call-template name=&#039;chomp-targets-recursively&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:with-param name=&#039;idstr&#039;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&#039;@targets&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:with-param&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
        &amp;lt;/bibl&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:apply-templates select=&#039;exsl:node-set($joint)//bibl&#039; /&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Calls copy-of with all ids in targets string --&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Partly stolen from http://wwbota.free.fr/XSLT_models/split-string.xslt--&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template name=&#039;chomp-targets-recursively&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:param name=&#039;idstr&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:variable name=&amp;quot;first&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name=&amp;quot;first0&amp;quot; select=&amp;quot;substring-before($idstr,&#039; &#039;)&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:when test=&amp;quot;$first0&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:copy-of select=&amp;quot;$first0&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:copy-of select=&amp;quot;$idstr&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:if test=&amp;quot;string-length($first)&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:call-template name=&#039;chomp-targets-recursively&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:with-param name=&amp;quot;idstr&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;substring-after($idstr,&#039; &#039;)&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:with-param&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:copy-of select=&#039;//*[@id=$first]&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--===================================--&amp;gt;&lt;br /&gt;
    &amp;lt;!-- complete bibl with titles (a)+m+s --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[(title[@level=&amp;quot;a&amp;quot;] or title[@level=&amp;quot;&amp;quot;] or title[not(@level)]) and title[@level=&amp;quot;m&amp;quot;] and title[@level=&amp;quot;s&amp;quot;]]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;biblStruct&amp;gt;&lt;br /&gt;
        &amp;lt;analytic&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:when test=&#039;author&#039;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select=&#039;author&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:call-template name=&#039;authors&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[(@level=&amp;quot;a&amp;quot; or @level=&amp;quot;&amp;quot; or not(@level))]&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/analytic&amp;gt;&lt;br /&gt;
        &amp;lt;monogr&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;m&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;series&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;s&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;date|publisher|pubPlace|biblScope&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;publisher&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;pubPlace&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;edition&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;date&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;biblScope&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/imprint&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;/series&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;note&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/biblStruct&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- complete bibl with titles (m)+s --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[not(title[@level=&amp;quot;a&amp;quot;]) and (title[@level=&amp;quot;m&amp;quot;] or title[@level=&amp;quot;&amp;quot;] or title[not(@level)]) and title[@level=&amp;quot;s&amp;quot;]]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;biblStruct&amp;gt;&lt;br /&gt;
        &amp;lt;monogr&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:when test=&#039;author&#039;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select=&#039;author&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:call-template name=&#039;authors&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;m&amp;quot; or @level=&amp;quot;&amp;quot; or not(@level)]&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;date|publisher|pubPlace|biblScope&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;publisher&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;pubPlace&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;edition&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;date&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;biblScope&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/imprint&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;series&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;s&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/series&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;note&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/biblStruct&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- bibl with title (a)+j --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[title[not(@level) or @level=&amp;quot;a&amp;quot;] and title[@level=&amp;quot;j&amp;quot;]]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;biblStruct&amp;gt;&lt;br /&gt;
        &amp;lt;analytic&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:when test=&#039;author&#039;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select=&#039;author&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:call-template name=&#039;authors&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[not(@level) or @level=&amp;quot;a&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/analytic&amp;gt;&lt;br /&gt;
        &amp;lt;monogr&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;j&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;date|publisher|pubPlace|biblScope&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;publisher&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;pubPlace&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;edition&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;date&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;biblScope&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/imprint&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;note&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/biblStruct&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- complete bibl with title (a)+m --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[title[not(@level) or @level=&amp;quot;a&amp;quot;] and title[@level=&amp;quot;m&amp;quot;]]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;biblStruct&amp;gt;&lt;br /&gt;
        &amp;lt;analytic&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:when test=&#039;author&#039;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select=&#039;author&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:call-template name=&#039;authors&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[not(@level) or @level=&amp;quot;a&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/analytic&amp;gt;&lt;br /&gt;
        &amp;lt;monogr&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;m&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;date|publisher|pubPlace|biblScope&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;publisher&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;pubPlace&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;edition&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;date&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;biblScope&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/imprint&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;note&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/biblStruct&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- bibl with either title m only or blank only, all without a,j,s --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[(not(title[@level=&amp;quot;a&amp;quot;]) and not(title[@level=&amp;quot;j&amp;quot;]) and not(title[@level=&amp;quot;s&amp;quot;])) and ((title[@level=&amp;quot;m&amp;quot;] and not(title[not(@level)])) or (not(title[@level=&amp;quot;m&amp;quot;]) and title[not(@level)]))]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;biblStruct&amp;gt;&lt;br /&gt;
        &amp;lt;monogr&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:when test=&#039;author&#039;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select=&#039;author&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:call-template name=&#039;authors&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;date|publisher|pubPlace|biblScope&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;publisher&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;pubPlace&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;edition&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;date&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;biblScope&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/imprint&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;note&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/biblStruct&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- incomplete bibl with title only! the bibl should have an @id --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template name=&#039;authors&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:if test=&#039;not(@id)&#039;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:text&amp;gt;ERROR: bibl has neither author nor id! &amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:if test=&#039;@id&#039;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name=&#039;ti&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:value-of select=&#039;@id&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&#039;//link&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;contains(@targets,$ti)&#039;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:call-template name=&#039;recursively-apply-first-of&#039;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:with-param name=&#039;idstr&#039;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&#039;@targets&#039; /&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:with-param&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Calls all author/name templates with id in given param string --&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Partly stolen from http://wwbota.free.fr/XSLT_models/split-string.xslt--&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template name=&#039;recursively-apply-first-of&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:param name=&#039;idstr&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:variable name=&amp;quot;first&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name=&amp;quot;first0&amp;quot; select=&amp;quot;substring-before($idstr,&#039; &#039;)&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:when test=&amp;quot;$first0&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:copy-of select=&amp;quot;$first0&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:copy-of select=&amp;quot;$idstr&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:if test=&amp;quot;string-length($first)&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:call-template name=&#039;recursively-apply-first-of&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:with-param name=&amp;quot;idstr&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;substring-after($idstr,&#039; &#039;)&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:with-param&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;//author[@id=$first]|//name[@id=$first]&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--=========================================--&amp;gt;&lt;br /&gt;
    &amp;lt;!-- all elements except title: do deep copy --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@* | author | title [name(..)=&#039;bibl&#039;] | editor | &lt;br /&gt;
      biblScope | edition | date[name(..)=&#039;bibl&#039;] | publisher | pubPlace | &lt;br /&gt;
      note[name(..)=&#039;bibl&#039;]&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:when test=&#039;@corresp&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;id(@corresp)&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:copy&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&amp;quot;@*[not(name()=&#039;TEIform&#039;)]|node()|text()&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:copy&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl/series&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:text&amp;gt;abc&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:copy-of select=&#039;*/node()&#039; /&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- copy CDATA within elements except titles --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;bibl/text()|author/text()|editor/text()|title[name(..)=&#039;bibl&#039;]/text()|biblScope/text()|date[name(..)=&#039;bibl&#039;]/text()|edition/text()|pubPlace/text()|publisher/text()|note[name(..)=&#039;bibl&#039;]/text()&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:copy /&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:XSLT]]&lt;br /&gt;
[[Category:XSLT:1.0]]&lt;/div&gt;</summary>
		<author><name>Rwst</name></author>
	</entry>
	<entry>
		<id>https://wiki.tei-c.org/index.php?title=Bibl2struct.xslt&amp;diff=4192</id>
		<title>Bibl2struct.xslt</title>
		<link rel="alternate" type="text/html" href="https://wiki.tei-c.org/index.php?title=Bibl2struct.xslt&amp;diff=4192"/>
		<updated>2008-02-05T10:51:23Z</updated>

		<summary type="html">&lt;p&gt;Rwst: /* Stylesheet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Transforms TEI &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt;s into &amp;lt;biblstruct&amp;gt; bibliographies.&lt;br /&gt;
Ignores all other content. Produces a &amp;lt;listBibl&amp;gt;&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Required Input ==&lt;br /&gt;
&lt;br /&gt;
This document will take any XML file, not just TEI XML, and processes all&lt;br /&gt;
&#039;&#039;complete&#039;&#039; &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; bibliographies into equivalent &amp;lt;biblStructs&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The transform differentiates five major cases from&lt;br /&gt;
the (non)-existence of &amp;lt;title&amp;gt;s of certain @level (a,j,m,s). The&lt;br /&gt;
level in parens, e.g. (a) means &#039;level a or without/blank level&#039;.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; has (a)+m+s titles ==&amp;gt; excerpt from work in series&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; has   (m)+s titles ==&amp;gt; work in series&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; has   (a)+j titles ==&amp;gt; journal article&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; has   (a)+m titles ==&amp;gt; excerpt from monograph&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; has     (m) titles ==&amp;gt; monograph&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;When an element contains @corresp the text is taken from that id.&lt;br /&gt;
When the author is missing and &amp;lt;bibl&amp;gt; has an id, then we look for&lt;br /&gt;
the id in &amp;lt;link&amp;gt;s and, when found, for authors therein.&lt;br /&gt;
When the document contains a &amp;lt;join result=&#039;bibl&#039; /&amp;gt;, we build that bibl&lt;br /&gt;
and process it like the others.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Expected Output ==&lt;br /&gt;
&amp;lt;nowiki&amp;gt; a &amp;lt;listBibl&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Known Restrictions or Problems ==&lt;br /&gt;
See TODO in the stylesheet.&lt;br /&gt;
&lt;br /&gt;
Please add any comments to the &#039;discussion&#039; tab. For payed support, please&lt;br /&gt;
mail the author (address within stylesheet).&lt;br /&gt;
&lt;br /&gt;
== Stylesheet ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!-- bibl2struct.xsl&lt;br /&gt;
  Transforms TEI &amp;lt;bibl&amp;gt;s into &amp;lt;biblstruct&amp;gt; bibliographies&lt;br /&gt;
  Author: (c) 2008 Ralf Stephan &amp;lt;ralf@ark.in-berlin.de&amp;gt;&lt;br /&gt;
  Published under GPL 2.0, see http://www.gnu.org/licenses/gpl-2.0.html&lt;br /&gt;
&lt;br /&gt;
  TODO:&lt;br /&gt;
  =====&lt;br /&gt;
  o  if the bibl has an @id and an author, we don&#039;t look further but&lt;br /&gt;
     there could be more authors &amp;lt;link&amp;gt;ed&lt;br /&gt;
  o  &amp;lt;title type=&#039;alt&#039;&amp;gt; with &amp;lt;editor role=&#039;translator&#039;&amp;gt;&lt;br /&gt;
  o  assume from existing &amp;lt;author /&amp;gt; that author of ref is author of work?&lt;br /&gt;
  o  handle &amp;lt;bibl&amp;gt;...&amp;lt;series&amp;gt;...&amp;lt;/series&amp;gt;...&amp;lt;/bibl&amp;gt;&lt;br /&gt;
  o  what do we do we with refs without title?&lt;br /&gt;
  o  what if we have &amp;lt;author&amp;gt;&amp;lt;corr&amp;gt;...&amp;lt;/corr&amp;gt;&amp;lt;/author&amp;gt; ?&lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:stylesheet xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot; version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
    xmlns:exsl=&amp;quot;http://exslt.org/common&amp;quot; extension-element-prefixes=&amp;quot;exsl&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;&lt;br /&gt;
	    doctype-public=&amp;quot;-//TEI P5//DTD Main Document Type//EN&amp;quot; &lt;br /&gt;
	    doctype-system=&amp;quot;tei2.dtd&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Include a link to CSS --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:processing-instruction name=&amp;quot;xml-stylesheet&amp;quot;&amp;gt;href=&amp;quot;eb-bib.css&amp;quot; type=&amp;quot;text/css&amp;quot;&amp;lt;/xsl:processing-instruction&amp;gt;&lt;br /&gt;
      &amp;lt;listBibl&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates /&amp;gt;&lt;br /&gt;
      &amp;lt;/listBibl&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- remove all default attributes --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@status&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@default&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@org[.=&#039;uniform&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@sample[.=&#039;complete&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@part[.=&#039;N&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@direct[.=&#039;unspecified&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@targOrder[.=&#039;U&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@from[.=&#039;ROOT&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@anchored[.=&#039;yes&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@place[.=&#039;unspecified&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;teiHeader/@type&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- do not copy all CDATA, we copy explicitly later --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;text()&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- ignore teiHeader --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;teiHeader&#039; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- &amp;lt;bibl&amp;gt; without &amp;lt;title&amp;gt; does nothing --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[not(title)]&#039; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- handle &amp;lt;join result=&#039;bibl&#039;&amp;gt; here --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;join[@result=&amp;quot;bibl&amp;quot;]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:variable name=&#039;joint&#039;&amp;gt;&lt;br /&gt;
        &amp;lt;bibl&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:call-template name=&#039;chomp-targets-recursively&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:with-param name=&#039;idstr&#039;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&#039;@targets&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:with-param&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
        &amp;lt;/bibl&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:apply-templates select=&#039;exsl:node-set($joint)//bibl&#039; /&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Calls copy-of with all ids in targets string --&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Partly stolen from http://wwbota.free.fr/XSLT_models/split-string.xslt--&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template name=&#039;chomp-targets-recursively&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:param name=&#039;idstr&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:variable name=&amp;quot;first&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name=&amp;quot;first0&amp;quot; select=&amp;quot;substring-before($idstr,&#039; &#039;)&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:when test=&amp;quot;$first0&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:copy-of select=&amp;quot;$first0&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:copy-of select=&amp;quot;$idstr&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:if test=&amp;quot;string-length($first)&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:call-template name=&#039;chomp-targets-recursively&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:with-param name=&amp;quot;idstr&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;substring-after($idstr,&#039; &#039;)&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:with-param&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:copy-of select=&#039;//*[@id=$first]&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--===================================--&amp;gt;&lt;br /&gt;
    &amp;lt;!-- complete bibl with titles (a)+m+s --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[(title[@level=&amp;quot;a&amp;quot;] or title[@level=&amp;quot;&amp;quot;] or title[not(@level)]) and title[@level=&amp;quot;m&amp;quot;] and title[@level=&amp;quot;s&amp;quot;]]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;biblStruct&amp;gt;&lt;br /&gt;
        &amp;lt;analytic&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:when test=&#039;author&#039;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select=&#039;author&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:call-template name=&#039;authors&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[(@level=&amp;quot;a&amp;quot; or @level=&amp;quot;&amp;quot; or not(@level))]&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/analytic&amp;gt;&lt;br /&gt;
        &amp;lt;monogr&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;m&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;series&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;s&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;date|publisher|pubPlace|biblScope&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;publisher&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;pubPlace&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;edition&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;date&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;biblScope&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/imprint&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;/series&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;note&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/biblStruct&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- complete bibl with titles (m)+s --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[not(title[@level=&amp;quot;a&amp;quot;]) and (title[@level=&amp;quot;m&amp;quot;] or title[@level=&amp;quot;&amp;quot;] or title[not(@level)]) and title[@level=&amp;quot;s&amp;quot;]]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;biblStruct&amp;gt;&lt;br /&gt;
        &amp;lt;monogr&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:when test=&#039;author&#039;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select=&#039;author&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:call-template name=&#039;authors&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;m&amp;quot; or @level=&amp;quot;&amp;quot; or not(@level)]&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;date|publisher|pubPlace|biblScope&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;publisher&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;pubPlace&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;edition&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;date&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;biblScope&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/imprint&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;series&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;s&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/series&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;note&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/biblStruct&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- bibl with title (a)+j --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[title[not(@level) or @level=&amp;quot;a&amp;quot;] and title[@level=&amp;quot;j&amp;quot;]]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;biblStruct&amp;gt;&lt;br /&gt;
        &amp;lt;analytic&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:when test=&#039;author&#039;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select=&#039;author&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:call-template name=&#039;authors&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[not(@level) or @level=&amp;quot;a&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/analytic&amp;gt;&lt;br /&gt;
        &amp;lt;monogr&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;j&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;date|publisher|pubPlace|biblScope&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;publisher&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;pubPlace&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;edition&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;date&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;biblScope&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/imprint&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;note&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/biblStruct&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- complete bibl with title (a)+m --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[title[not(@level) or @level=&amp;quot;a&amp;quot;] and title[@level=&amp;quot;m&amp;quot;]]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;biblStruct&amp;gt;&lt;br /&gt;
        &amp;lt;analytic&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:when test=&#039;author&#039;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select=&#039;author&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:call-template name=&#039;authors&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[not(@level) or @level=&amp;quot;a&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/analytic&amp;gt;&lt;br /&gt;
        &amp;lt;monogr&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;m&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;date|publisher|pubPlace|biblScope&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;publisher&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;pubPlace&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;edition&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;date&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;biblScope&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/imprint&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;note&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/biblStruct&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- bibl with either title m only or blank only, all without a,j,s --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[(not(title[@level=&amp;quot;a&amp;quot;]) and not(title[@level=&amp;quot;j&amp;quot;]) and not(title[@level=&amp;quot;s&amp;quot;])) and ((title[@level=&amp;quot;m&amp;quot;] and not(title[not(@level)])) or (not(title[@level=&amp;quot;m&amp;quot;]) and title[not(@level)]))]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;biblStruct&amp;gt;&lt;br /&gt;
        &amp;lt;monogr&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:when test=&#039;author&#039;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select=&#039;author&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:call-template name=&#039;authors&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;date|publisher|pubPlace|biblScope&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;publisher&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;pubPlace&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;edition&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;date&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;biblScope&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/imprint&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;note&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/biblStruct&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- incomplete bibl with title only! the bibl should have an @id --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template name=&#039;authors&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:if test=&#039;not(@id)&#039;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:text&amp;gt;ERROR: bibl has neither author nor id! &amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:if test=&#039;@id&#039;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name=&#039;ti&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:value-of select=&#039;@id&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&#039;//link&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;contains(@targets,$ti)&#039;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:call-template name=&#039;recursively-apply-first-of&#039;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:with-param name=&#039;idstr&#039;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&#039;@targets&#039; /&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:with-param&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Calls all author/name templates with id in given param string --&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Partly stolen from http://wwbota.free.fr/XSLT_models/split-string.xslt--&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template name=&#039;recursively-apply-first-of&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:param name=&#039;idstr&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:variable name=&amp;quot;first&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name=&amp;quot;first0&amp;quot; select=&amp;quot;substring-before($idstr,&#039; &#039;)&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:when test=&amp;quot;$first0&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:copy-of select=&amp;quot;$first0&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:copy-of select=&amp;quot;$idstr&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:if test=&amp;quot;string-length($first)&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:call-template name=&#039;recursively-apply-first-of&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:with-param name=&amp;quot;idstr&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;substring-after($idstr,&#039; &#039;)&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:with-param&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;//author[@id=$first]|//name[@id=$first]&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--=========================================--&amp;gt;&lt;br /&gt;
    &amp;lt;!-- all elements except title: do deep copy --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@* | author | title [name(..)=&#039;bibl&#039;] | editor | &lt;br /&gt;
      biblScope | edition | date[name(..)=&#039;bibl&#039;] | publisher | pubPlace | &lt;br /&gt;
      note[name(..)=&#039;bibl&#039;]&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:when test=&#039;@corresp&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;id(@corresp)&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:copy&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&amp;quot;@*[not(name()=&#039;TEIform&#039;)]|node()|text()&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:copy&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl/series&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:text&amp;gt;abc&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:copy-of select=&#039;*/node()&#039; /&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- copy CDATA within elements except titles --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;bibl/text()|author/text()|editor/text()|title[name(..)=&#039;bibl&#039;]/text()|biblScope/text()|date[name(..)=&#039;bibl&#039;]/text()|edition/text()|pubPlace/text()|publisher/text()|note[name(..)=&#039;bibl&#039;]/text()&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:copy /&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:XSLT]]&lt;br /&gt;
[[Category:XSLT:1.0]]&lt;/div&gt;</summary>
		<author><name>Rwst</name></author>
	</entry>
	<entry>
		<id>https://wiki.tei-c.org/index.php?title=Bibl2struct.xslt&amp;diff=4191</id>
		<title>Bibl2struct.xslt</title>
		<link rel="alternate" type="text/html" href="https://wiki.tei-c.org/index.php?title=Bibl2struct.xslt&amp;diff=4191"/>
		<updated>2008-02-05T10:50:46Z</updated>

		<summary type="html">&lt;p&gt;Rwst: /* Stylesheet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Transforms TEI &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt;s into &amp;lt;biblstruct&amp;gt; bibliographies.&lt;br /&gt;
Ignores all other content. Produces a &amp;lt;listBibl&amp;gt;&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Required Input ==&lt;br /&gt;
&lt;br /&gt;
This document will take any XML file, not just TEI XML, and processes all&lt;br /&gt;
&#039;&#039;complete&#039;&#039; &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; bibliographies into equivalent &amp;lt;biblStructs&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The transform differentiates five major cases from&lt;br /&gt;
the (non)-existence of &amp;lt;title&amp;gt;s of certain @level (a,j,m,s). The&lt;br /&gt;
level in parens, e.g. (a) means &#039;level a or without/blank level&#039;.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; has (a)+m+s titles ==&amp;gt; excerpt from work in series&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; has   (m)+s titles ==&amp;gt; work in series&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; has   (a)+j titles ==&amp;gt; journal article&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; has   (a)+m titles ==&amp;gt; excerpt from monograph&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; has     (m) titles ==&amp;gt; monograph&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;When an element contains @corresp the text is taken from that id.&lt;br /&gt;
When the author is missing and &amp;lt;bibl&amp;gt; has an id, then we look for&lt;br /&gt;
the id in &amp;lt;link&amp;gt;s and, when found, for authors therein.&lt;br /&gt;
When the document contains a &amp;lt;join result=&#039;bibl&#039; /&amp;gt;, we build that bibl&lt;br /&gt;
and process it like the others.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Expected Output ==&lt;br /&gt;
&amp;lt;nowiki&amp;gt; a &amp;lt;listBibl&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Known Restrictions or Problems ==&lt;br /&gt;
See TODO in the stylesheet.&lt;br /&gt;
&lt;br /&gt;
Please add any comments to the &#039;discussion&#039; tab. For payed support, please&lt;br /&gt;
mail the author (address within stylesheet).&lt;br /&gt;
&lt;br /&gt;
== Stylesheet ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!-- bibl2struct.xsl&lt;br /&gt;
  Transforms TEI &amp;lt;bibl&amp;gt;s into &amp;lt;biblstruct&amp;gt; bibliographies&lt;br /&gt;
  Author: (c) 2008 Ralf Stephan &amp;lt;ralf@ark.in-berlin.de&amp;gt;&lt;br /&gt;
  Published under GPL 2.0, see http://www.gnu.org/licenses/gpl-2.0.html&lt;br /&gt;
&lt;br /&gt;
  TODO:&lt;br /&gt;
  =====&lt;br /&gt;
  o  if the bibl has an @id and an author, we don&#039;t look further but&lt;br /&gt;
     there could be more authors &amp;lt;link&amp;gt;ed&lt;br /&gt;
  o  &amp;lt;title type=&#039;alt&#039;&amp;gt; with &amp;lt;editor role=&#039;translator&#039;&amp;gt;&lt;br /&gt;
  o  assume from existing &amp;lt;author /&amp;gt; that author of ref is author of work?&lt;br /&gt;
  o  handle &amp;lt;bibl&amp;gt;...&amp;lt;series&amp;gt;...&amp;lt;/series&amp;gt;...&amp;lt;/bibl&amp;gt;&lt;br /&gt;
  o  what do we do we with refs without title?&lt;br /&gt;
  o  what if we have &amp;lt;author&amp;gt;&amp;lt;corr&amp;gt;...&amp;lt;/corr&amp;gt;&amp;lt;/author&amp;gt; ?&lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:stylesheet xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot; version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
    xmlns:exsl=&amp;quot;http://exslt.org/common&amp;quot; extension-element-prefixes=&amp;quot;exsl&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;&lt;br /&gt;
	    doctype-public=&amp;quot;-//TEI P5//DTD Main Document Type//EN&amp;quot; &lt;br /&gt;
	    doctype-system=&amp;quot;tei2.dtd&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Include a link to CSS --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:processing-instruction name=&amp;quot;xml-stylesheet&amp;quot;&amp;gt;href=&amp;quot;eb-bib.css&amp;quot; type=&amp;quot;text/css&amp;quot;&amp;lt;/xsl:processing-instruction&amp;gt;&lt;br /&gt;
      &amp;lt;listBibl&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates /&amp;gt;&lt;br /&gt;
      &amp;lt;/listBibl&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- remove all default attributes --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@status&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@default&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@org[.=&#039;uniform&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@sample[.=&#039;complete&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@part[.=&#039;N&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@direct[.=&#039;unspecified&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@targOrder[.=&#039;U&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@from[.=&#039;ROOT&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@anchored[.=&#039;yes&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@place[.=&#039;unspecified&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;teiHeader/@type&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- do not copy all CDATA, we copy explicitly later --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;text()&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- ignore teiHeader --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;teiHeader&#039; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- &amp;lt;bibl&amp;gt; without &amp;lt;title&amp;gt; does nothing --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[not(title)]&#039; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- handle &amp;lt;join result=&#039;bibl&#039;&amp;gt; here --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;join[@result=&amp;quot;bibl&amp;quot;]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:variable name=&#039;joint&#039;&amp;gt;&lt;br /&gt;
        &amp;lt;bibl&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:call-template name=&#039;chomp-targets-recursively&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:with-param name=&#039;idstr&#039;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&#039;@targets&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:with-param&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
        &amp;lt;/bibl&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:apply-templates select=&#039;exsl:node-set($joint)//bibl&#039; /&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Calls copy-of with all ids in targets string --&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Partly stolen from http://wwbota.free.fr/XSLT_models/split-string.xslt--&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template name=&#039;chomp-targets-recursively&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:param name=&#039;idstr&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:variable name=&amp;quot;first&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name=&amp;quot;first0&amp;quot; select=&amp;quot;substring-before($idstr,&#039; &#039;)&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:when test=&amp;quot;$first0&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:copy-of select=&amp;quot;$first0&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:copy-of select=&amp;quot;$idstr&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:if test=&amp;quot;string-length($first)&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:call-template name=&#039;chomp-targets-recursively&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:with-param name=&amp;quot;idstr&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;substring-after($idstr,&#039; &#039;)&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:with-param&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:copy-of select=&#039;//*[@id=$first]&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--===================================--&amp;gt;&lt;br /&gt;
    &amp;lt;!-- complete bibl with titles (a)+m+s --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[(title[@level=&amp;quot;a&amp;quot;] or title[@level=&amp;quot;&amp;quot;] or title[not(@level)]) and title[@level=&amp;quot;m&amp;quot;] and title[@level=&amp;quot;s&amp;quot;]]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;biblStruct&amp;gt;&lt;br /&gt;
        &amp;lt;analytic&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:when test=&#039;author&#039;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select=&#039;author&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:call-template name=&#039;authors&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[(@level=&amp;quot;a&amp;quot; or @level=&amp;quot;&amp;quot; or not(@level))]&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/analytic&amp;gt;&lt;br /&gt;
        &amp;lt;monogr&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;m&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;series&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;s&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;date|publisher|pubPlace|biblScope&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;publisher&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;pubPlace&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;edition&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;date&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;biblScope&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/imprint&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;/series&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;note&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/biblStruct&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- complete bibl with titles (m)+s --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[not(title[@level=&amp;quot;a&amp;quot;]) and (title[@level=&amp;quot;m&amp;quot;] or title[@level=&amp;quot;&amp;quot;] or title[not(@level)]) and title[@level=&amp;quot;s&amp;quot;]]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;biblStruct&amp;gt;&lt;br /&gt;
        &amp;lt;monogr&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:when test=&#039;author&#039;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select=&#039;author&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:call-template name=&#039;authors&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;m&amp;quot; or @level=&amp;quot;&amp;quot; or not(@level)]&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;date|publisher|pubPlace|biblScope&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;publisher&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;pubPlace&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;edition&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;date&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;biblScope&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/imprint&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;series&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;s&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/series&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;note&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/biblStruct&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- bibl with title (a)+j --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[title[not(@level) or @level=&amp;quot;a&amp;quot;] and title[@level=&amp;quot;j&amp;quot;]]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;biblStruct&amp;gt;&lt;br /&gt;
        &amp;lt;analytic&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:when test=&#039;author&#039;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select=&#039;author&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:call-template name=&#039;authors&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[not(@level) or @level=&amp;quot;a&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/analytic&amp;gt;&lt;br /&gt;
        &amp;lt;monogr&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;j&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;date|publisher|pubPlace|biblScope&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;publisher&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;pubPlace&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;edition&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;date&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;biblScope&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/imprint&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;note&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/biblStruct&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- complete bibl with title (a)+m --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[title[not(@level) or @level=&amp;quot;a&amp;quot;] and title[@level=&amp;quot;m&amp;quot;]]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;biblStruct&amp;gt;&lt;br /&gt;
        &amp;lt;analytic&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:when test=&#039;author&#039;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select=&#039;author&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:call-template name=&#039;authors&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[not(@level) or @level=&amp;quot;a&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/analytic&amp;gt;&lt;br /&gt;
        &amp;lt;monogr&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;m&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;date|publisher|pubPlace|biblScope&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;publisher&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;pubPlace&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;edition&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;date&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;biblScope&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/imprint&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;note&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/biblStruct&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- bibl with either title m only or blank only, all without a,j,s --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[(not(title[@level=&amp;quot;a&amp;quot;]) and not(title[@level=&amp;quot;j&amp;quot;]) and not(title[@level=&amp;quot;s&amp;quot;])) and ((title[@level=&amp;quot;m&amp;quot;] and not(title[not(@level)])) or (not(title[@level=&amp;quot;m&amp;quot;]) and title[not(@level)]))]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;biblStruct&amp;gt;&lt;br /&gt;
        &amp;lt;monogr&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:when test=&#039;author&#039;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select=&#039;author&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:call-template name=&#039;authors&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;date|publisher|pubPlace|biblScope&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;publisher&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;pubPlace&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;edition&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;date&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;biblScope&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/imprint&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;note&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/biblStruct&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- incomplete bibl with title only! the bibl should have an @id --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template name=&#039;authors&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:if test=&#039;not(@id)&#039;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:text&amp;gt;ERROR: bibl has neither author nor id! &amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:if test=&#039;@id&#039;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name=&#039;ti&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:value-of select=&#039;@id&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&#039;//link&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;contains(@targets,$ti)&#039;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:call-template name=&#039;recursively-apply-first-of&#039;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:with-param name=&#039;idstr&#039;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&#039;@targets&#039; /&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:with-param&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Calls all author/name templates with id in given param string --&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Partly stolen from http://wwbota.free.fr/XSLT_models/split-string.xslt--&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template name=&#039;recursively-apply-first-of&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:param name=&#039;idstr&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:variable name=&amp;quot;first&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name=&amp;quot;first0&amp;quot; select=&amp;quot;substring-before($idstr,&#039; &#039;)&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:when test=&amp;quot;$first0&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:copy-of select=&amp;quot;$first0&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:copy-of select=&amp;quot;$idstr&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:if test=&amp;quot;string-length($first)&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:call-template name=&#039;recursively-apply-first-of&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:with-param name=&amp;quot;idstr&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;substring-after($idstr,&#039; &#039;)&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:with-param&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;//author[@id=$first]|//name[@id=$first]&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--=========================================--&amp;gt;&lt;br /&gt;
    &amp;lt;!-- all elements except title: do deep copy --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@* | author | title [name(..)=&#039;bibl&#039;] | editor | &lt;br /&gt;
      biblScope | edition | date[name(..)=&#039;bibl&#039;] | publisher | pubPlace | &lt;br /&gt;
      note[name(..)=&#039;bibl&#039;]&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:when test=&#039;@corresp&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;id(@corresp)&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:copy&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&amp;quot;@*[not(name()=&#039;TEIform&#039;)]|node()|text()&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:copy&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl/series&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:text&amp;gt;abc&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:copy-of select=&#039;*/node()&#039; /&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- copy CDATA within elements except titles --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;bibl/text()|author/text()|editor/text()|title[name(..)=&#039;bibl&#039;]/text()|biblScope/text()|date[name(..)=&#039;bibl&#039;]/text()|edition/text()|pubPlace/text()|publisher/text()|note[name(..)=&#039;bibl&#039;]/text()&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:copy /&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:XSLT]]&lt;br /&gt;
[[Category:XSLT 1.0]]&lt;/div&gt;</summary>
		<author><name>Rwst</name></author>
	</entry>
	<entry>
		<id>https://wiki.tei-c.org/index.php?title=Bibl2struct.xslt&amp;diff=4190</id>
		<title>Bibl2struct.xslt</title>
		<link rel="alternate" type="text/html" href="https://wiki.tei-c.org/index.php?title=Bibl2struct.xslt&amp;diff=4190"/>
		<updated>2008-02-05T10:49:38Z</updated>

		<summary type="html">&lt;p&gt;Rwst: /* Summary */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Transforms TEI &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt;s into &amp;lt;biblstruct&amp;gt; bibliographies.&lt;br /&gt;
Ignores all other content. Produces a &amp;lt;listBibl&amp;gt;&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Required Input ==&lt;br /&gt;
&lt;br /&gt;
This document will take any XML file, not just TEI XML, and processes all&lt;br /&gt;
&#039;&#039;complete&#039;&#039; &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; bibliographies into equivalent &amp;lt;biblStructs&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The transform differentiates five major cases from&lt;br /&gt;
the (non)-existence of &amp;lt;title&amp;gt;s of certain @level (a,j,m,s). The&lt;br /&gt;
level in parens, e.g. (a) means &#039;level a or without/blank level&#039;.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; has (a)+m+s titles ==&amp;gt; excerpt from work in series&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; has   (m)+s titles ==&amp;gt; work in series&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; has   (a)+j titles ==&amp;gt; journal article&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; has   (a)+m titles ==&amp;gt; excerpt from monograph&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; has     (m) titles ==&amp;gt; monograph&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;When an element contains @corresp the text is taken from that id.&lt;br /&gt;
When the author is missing and &amp;lt;bibl&amp;gt; has an id, then we look for&lt;br /&gt;
the id in &amp;lt;link&amp;gt;s and, when found, for authors therein.&lt;br /&gt;
When the document contains a &amp;lt;join result=&#039;bibl&#039; /&amp;gt;, we build that bibl&lt;br /&gt;
and process it like the others.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Expected Output ==&lt;br /&gt;
&amp;lt;nowiki&amp;gt; a &amp;lt;listBibl&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Known Restrictions or Problems ==&lt;br /&gt;
See TODO in the stylesheet.&lt;br /&gt;
&lt;br /&gt;
Please add any comments to the &#039;discussion&#039; tab. For payed support, please&lt;br /&gt;
mail the author (address within stylesheet).&lt;br /&gt;
&lt;br /&gt;
== Stylesheet ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!-- bibl2struct.xsl&lt;br /&gt;
  Transforms TEI &amp;lt;bibl&amp;gt;s into &amp;lt;biblstruct&amp;gt; bibliographies&lt;br /&gt;
  Author: (c) 2008 Ralf Stephan &amp;lt;ralf@ark.in-berlin.de&amp;gt;&lt;br /&gt;
  Published under GPL 2.0, see http://www.gnu.org/licenses/gpl-2.0.html&lt;br /&gt;
&lt;br /&gt;
  TODO:&lt;br /&gt;
  =====&lt;br /&gt;
  o  if the bibl has an @id and an author, we don&#039;t look further but&lt;br /&gt;
     there could be more authors &amp;lt;link&amp;gt;ed&lt;br /&gt;
  o  &amp;lt;title type=&#039;alt&#039;&amp;gt; with &amp;lt;editor role=&#039;translator&#039;&amp;gt;&lt;br /&gt;
  o  assume from existing &amp;lt;author /&amp;gt; that author of ref is author of work?&lt;br /&gt;
  o  handle &amp;lt;bibl&amp;gt;...&amp;lt;series&amp;gt;...&amp;lt;/series&amp;gt;...&amp;lt;/bibl&amp;gt;&lt;br /&gt;
  o  what do we do we with refs without title?&lt;br /&gt;
  o  what if we have &amp;lt;author&amp;gt;&amp;lt;corr&amp;gt;...&amp;lt;/corr&amp;gt;&amp;lt;/author&amp;gt; ?&lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:stylesheet xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot; version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
    xmlns:exsl=&amp;quot;http://exslt.org/common&amp;quot; extension-element-prefixes=&amp;quot;exsl&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;&lt;br /&gt;
	    doctype-public=&amp;quot;-//TEI P5//DTD Main Document Type//EN&amp;quot; &lt;br /&gt;
	    doctype-system=&amp;quot;tei2.dtd&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Include a link to CSS --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:processing-instruction name=&amp;quot;xml-stylesheet&amp;quot;&amp;gt;href=&amp;quot;eb-bib.css&amp;quot; type=&amp;quot;text/css&amp;quot;&amp;lt;/xsl:processing-instruction&amp;gt;&lt;br /&gt;
      &amp;lt;listBibl&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates /&amp;gt;&lt;br /&gt;
      &amp;lt;/listBibl&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- remove all default attributes --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@status&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@default&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@org[.=&#039;uniform&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@sample[.=&#039;complete&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@part[.=&#039;N&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@direct[.=&#039;unspecified&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@targOrder[.=&#039;U&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@from[.=&#039;ROOT&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@anchored[.=&#039;yes&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@place[.=&#039;unspecified&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;teiHeader/@type&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- do not copy all CDATA, we copy explicitly later --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;text()&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- ignore teiHeader --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;teiHeader&#039; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- &amp;lt;bibl&amp;gt; without &amp;lt;title&amp;gt; does nothing --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[not(title)]&#039; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- handle &amp;lt;join result=&#039;bibl&#039;&amp;gt; here --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;join[@result=&amp;quot;bibl&amp;quot;]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:variable name=&#039;joint&#039;&amp;gt;&lt;br /&gt;
        &amp;lt;bibl&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:call-template name=&#039;chomp-targets-recursively&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:with-param name=&#039;idstr&#039;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&#039;@targets&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:with-param&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
        &amp;lt;/bibl&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:apply-templates select=&#039;exsl:node-set($joint)//bibl&#039; /&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Calls copy-of with all ids in targets string --&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Partly stolen from http://wwbota.free.fr/XSLT_models/split-string.xslt--&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template name=&#039;chomp-targets-recursively&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:param name=&#039;idstr&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:variable name=&amp;quot;first&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name=&amp;quot;first0&amp;quot; select=&amp;quot;substring-before($idstr,&#039; &#039;)&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:when test=&amp;quot;$first0&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:copy-of select=&amp;quot;$first0&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:copy-of select=&amp;quot;$idstr&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:if test=&amp;quot;string-length($first)&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:call-template name=&#039;chomp-targets-recursively&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:with-param name=&amp;quot;idstr&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;substring-after($idstr,&#039; &#039;)&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:with-param&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:copy-of select=&#039;//*[@id=$first]&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--===================================--&amp;gt;&lt;br /&gt;
    &amp;lt;!-- complete bibl with titles (a)+m+s --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[(title[@level=&amp;quot;a&amp;quot;] or title[@level=&amp;quot;&amp;quot;] or title[not(@level)]) and title[@level=&amp;quot;m&amp;quot;] and title[@level=&amp;quot;s&amp;quot;]]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;biblStruct&amp;gt;&lt;br /&gt;
        &amp;lt;analytic&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:when test=&#039;author&#039;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select=&#039;author&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:call-template name=&#039;authors&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[(@level=&amp;quot;a&amp;quot; or @level=&amp;quot;&amp;quot; or not(@level))]&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/analytic&amp;gt;&lt;br /&gt;
        &amp;lt;monogr&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;m&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;series&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;s&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;date|publisher|pubPlace|biblScope&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;publisher&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;pubPlace&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;edition&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;date&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;biblScope&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/imprint&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;/series&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;note&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/biblStruct&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- complete bibl with titles (m)+s --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[not(title[@level=&amp;quot;a&amp;quot;]) and (title[@level=&amp;quot;m&amp;quot;] or title[@level=&amp;quot;&amp;quot;] or title[not(@level)]) and title[@level=&amp;quot;s&amp;quot;]]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;biblStruct&amp;gt;&lt;br /&gt;
        &amp;lt;monogr&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:when test=&#039;author&#039;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select=&#039;author&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:call-template name=&#039;authors&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;m&amp;quot; or @level=&amp;quot;&amp;quot; or not(@level)]&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;date|publisher|pubPlace|biblScope&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;publisher&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;pubPlace&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;edition&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;date&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;biblScope&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/imprint&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;series&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;s&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/series&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;note&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/biblStruct&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- bibl with title (a)+j --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[title[not(@level) or @level=&amp;quot;a&amp;quot;] and title[@level=&amp;quot;j&amp;quot;]]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;biblStruct&amp;gt;&lt;br /&gt;
        &amp;lt;analytic&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:when test=&#039;author&#039;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select=&#039;author&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:call-template name=&#039;authors&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[not(@level) or @level=&amp;quot;a&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/analytic&amp;gt;&lt;br /&gt;
        &amp;lt;monogr&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;j&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;date|publisher|pubPlace|biblScope&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;publisher&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;pubPlace&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;edition&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;date&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;biblScope&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/imprint&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;note&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/biblStruct&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- complete bibl with title (a)+m --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[title[not(@level) or @level=&amp;quot;a&amp;quot;] and title[@level=&amp;quot;m&amp;quot;]]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;biblStruct&amp;gt;&lt;br /&gt;
        &amp;lt;analytic&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:when test=&#039;author&#039;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select=&#039;author&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:call-template name=&#039;authors&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[not(@level) or @level=&amp;quot;a&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/analytic&amp;gt;&lt;br /&gt;
        &amp;lt;monogr&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;m&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;date|publisher|pubPlace|biblScope&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;publisher&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;pubPlace&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;edition&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;date&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;biblScope&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/imprint&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;note&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/biblStruct&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- bibl with either title m only or blank only, all without a,j,s --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[(not(title[@level=&amp;quot;a&amp;quot;]) and not(title[@level=&amp;quot;j&amp;quot;]) and not(title[@level=&amp;quot;s&amp;quot;])) and ((title[@level=&amp;quot;m&amp;quot;] and not(title[not(@level)])) or (not(title[@level=&amp;quot;m&amp;quot;]) and title[not(@level)]))]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;biblStruct&amp;gt;&lt;br /&gt;
        &amp;lt;monogr&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:when test=&#039;author&#039;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select=&#039;author&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:call-template name=&#039;authors&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;date|publisher|pubPlace|biblScope&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;publisher&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;pubPlace&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;edition&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;date&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;biblScope&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/imprint&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;note&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/biblStruct&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- incomplete bibl with title only! the bibl should have an @id --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template name=&#039;authors&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:if test=&#039;not(@id)&#039;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:text&amp;gt;ERROR: bibl has neither author nor id! &amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:if test=&#039;@id&#039;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name=&#039;ti&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:value-of select=&#039;@id&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&#039;//link&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;contains(@targets,$ti)&#039;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:call-template name=&#039;recursively-apply-first-of&#039;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:with-param name=&#039;idstr&#039;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&#039;@targets&#039; /&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:with-param&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Calls all author/name templates with id in given param string --&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Partly stolen from http://wwbota.free.fr/XSLT_models/split-string.xslt--&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template name=&#039;recursively-apply-first-of&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:param name=&#039;idstr&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:variable name=&amp;quot;first&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name=&amp;quot;first0&amp;quot; select=&amp;quot;substring-before($idstr,&#039; &#039;)&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:when test=&amp;quot;$first0&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:copy-of select=&amp;quot;$first0&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:copy-of select=&amp;quot;$idstr&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:if test=&amp;quot;string-length($first)&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:call-template name=&#039;recursively-apply-first-of&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:with-param name=&amp;quot;idstr&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;substring-after($idstr,&#039; &#039;)&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:with-param&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;//author[@id=$first]|//name[@id=$first]&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--=========================================--&amp;gt;&lt;br /&gt;
    &amp;lt;!-- all elements except title: do deep copy --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@* | author | title [name(..)=&#039;bibl&#039;] | editor | &lt;br /&gt;
      biblScope | edition | date[name(..)=&#039;bibl&#039;] | publisher | pubPlace | &lt;br /&gt;
      note[name(..)=&#039;bibl&#039;]&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:when test=&#039;@corresp&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;id(@corresp)&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:copy&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&amp;quot;@*[not(name()=&#039;TEIform&#039;)]|node()|text()&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:copy&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl/series&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:text&amp;gt;abc&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:copy-of select=&#039;*/node()&#039; /&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- copy CDATA within elements except titles --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;bibl/text()|author/text()|editor/text()|title[name(..)=&#039;bibl&#039;]/text()|biblScope/text()|date[name(..)=&#039;bibl&#039;]/text()|edition/text()|pubPlace/text()|publisher/text()|note[name(..)=&#039;bibl&#039;]/text()&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:copy /&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:XSLT]]&lt;/div&gt;</summary>
		<author><name>Rwst</name></author>
	</entry>
	<entry>
		<id>https://wiki.tei-c.org/index.php?title=Bibl2struct.xslt&amp;diff=4189</id>
		<title>Bibl2struct.xslt</title>
		<link rel="alternate" type="text/html" href="https://wiki.tei-c.org/index.php?title=Bibl2struct.xslt&amp;diff=4189"/>
		<updated>2008-02-05T10:49:02Z</updated>

		<summary type="html">&lt;p&gt;Rwst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
  Transforms TEI &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt;s into &amp;lt;biblstruct&amp;gt; bibliographies.&lt;br /&gt;
  Ignores all other content. Produces a &amp;lt;listBibl&amp;gt;&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Required Input ==&lt;br /&gt;
&lt;br /&gt;
This document will take any XML file, not just TEI XML, and processes all&lt;br /&gt;
&#039;&#039;complete&#039;&#039; &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; bibliographies into equivalent &amp;lt;biblStructs&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The transform differentiates five major cases from&lt;br /&gt;
the (non)-existence of &amp;lt;title&amp;gt;s of certain @level (a,j,m,s). The&lt;br /&gt;
level in parens, e.g. (a) means &#039;level a or without/blank level&#039;.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; has (a)+m+s titles ==&amp;gt; excerpt from work in series&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; has   (m)+s titles ==&amp;gt; work in series&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; has   (a)+j titles ==&amp;gt; journal article&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; has   (a)+m titles ==&amp;gt; excerpt from monograph&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; has     (m) titles ==&amp;gt; monograph&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;When an element contains @corresp the text is taken from that id.&lt;br /&gt;
When the author is missing and &amp;lt;bibl&amp;gt; has an id, then we look for&lt;br /&gt;
the id in &amp;lt;link&amp;gt;s and, when found, for authors therein.&lt;br /&gt;
When the document contains a &amp;lt;join result=&#039;bibl&#039; /&amp;gt;, we build that bibl&lt;br /&gt;
and process it like the others.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Expected Output ==&lt;br /&gt;
&amp;lt;nowiki&amp;gt; a &amp;lt;listBibl&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Known Restrictions or Problems ==&lt;br /&gt;
See TODO in the stylesheet.&lt;br /&gt;
&lt;br /&gt;
Please add any comments to the &#039;discussion&#039; tab. For payed support, please&lt;br /&gt;
mail the author (address within stylesheet).&lt;br /&gt;
&lt;br /&gt;
== Stylesheet ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!-- bibl2struct.xsl&lt;br /&gt;
  Transforms TEI &amp;lt;bibl&amp;gt;s into &amp;lt;biblstruct&amp;gt; bibliographies&lt;br /&gt;
  Author: (c) 2008 Ralf Stephan &amp;lt;ralf@ark.in-berlin.de&amp;gt;&lt;br /&gt;
  Published under GPL 2.0, see http://www.gnu.org/licenses/gpl-2.0.html&lt;br /&gt;
&lt;br /&gt;
  TODO:&lt;br /&gt;
  =====&lt;br /&gt;
  o  if the bibl has an @id and an author, we don&#039;t look further but&lt;br /&gt;
     there could be more authors &amp;lt;link&amp;gt;ed&lt;br /&gt;
  o  &amp;lt;title type=&#039;alt&#039;&amp;gt; with &amp;lt;editor role=&#039;translator&#039;&amp;gt;&lt;br /&gt;
  o  assume from existing &amp;lt;author /&amp;gt; that author of ref is author of work?&lt;br /&gt;
  o  handle &amp;lt;bibl&amp;gt;...&amp;lt;series&amp;gt;...&amp;lt;/series&amp;gt;...&amp;lt;/bibl&amp;gt;&lt;br /&gt;
  o  what do we do we with refs without title?&lt;br /&gt;
  o  what if we have &amp;lt;author&amp;gt;&amp;lt;corr&amp;gt;...&amp;lt;/corr&amp;gt;&amp;lt;/author&amp;gt; ?&lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:stylesheet xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot; version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
    xmlns:exsl=&amp;quot;http://exslt.org/common&amp;quot; extension-element-prefixes=&amp;quot;exsl&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;&lt;br /&gt;
	    doctype-public=&amp;quot;-//TEI P5//DTD Main Document Type//EN&amp;quot; &lt;br /&gt;
	    doctype-system=&amp;quot;tei2.dtd&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Include a link to CSS --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:processing-instruction name=&amp;quot;xml-stylesheet&amp;quot;&amp;gt;href=&amp;quot;eb-bib.css&amp;quot; type=&amp;quot;text/css&amp;quot;&amp;lt;/xsl:processing-instruction&amp;gt;&lt;br /&gt;
      &amp;lt;listBibl&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates /&amp;gt;&lt;br /&gt;
      &amp;lt;/listBibl&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- remove all default attributes --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@status&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@default&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@org[.=&#039;uniform&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@sample[.=&#039;complete&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@part[.=&#039;N&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@direct[.=&#039;unspecified&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@targOrder[.=&#039;U&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@from[.=&#039;ROOT&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@anchored[.=&#039;yes&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@place[.=&#039;unspecified&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;teiHeader/@type&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- do not copy all CDATA, we copy explicitly later --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;text()&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- ignore teiHeader --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;teiHeader&#039; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- &amp;lt;bibl&amp;gt; without &amp;lt;title&amp;gt; does nothing --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[not(title)]&#039; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- handle &amp;lt;join result=&#039;bibl&#039;&amp;gt; here --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;join[@result=&amp;quot;bibl&amp;quot;]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:variable name=&#039;joint&#039;&amp;gt;&lt;br /&gt;
        &amp;lt;bibl&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:call-template name=&#039;chomp-targets-recursively&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:with-param name=&#039;idstr&#039;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&#039;@targets&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:with-param&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
        &amp;lt;/bibl&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:apply-templates select=&#039;exsl:node-set($joint)//bibl&#039; /&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Calls copy-of with all ids in targets string --&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Partly stolen from http://wwbota.free.fr/XSLT_models/split-string.xslt--&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template name=&#039;chomp-targets-recursively&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:param name=&#039;idstr&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:variable name=&amp;quot;first&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name=&amp;quot;first0&amp;quot; select=&amp;quot;substring-before($idstr,&#039; &#039;)&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:when test=&amp;quot;$first0&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:copy-of select=&amp;quot;$first0&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:copy-of select=&amp;quot;$idstr&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:if test=&amp;quot;string-length($first)&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:call-template name=&#039;chomp-targets-recursively&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:with-param name=&amp;quot;idstr&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;substring-after($idstr,&#039; &#039;)&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:with-param&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:copy-of select=&#039;//*[@id=$first]&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--===================================--&amp;gt;&lt;br /&gt;
    &amp;lt;!-- complete bibl with titles (a)+m+s --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[(title[@level=&amp;quot;a&amp;quot;] or title[@level=&amp;quot;&amp;quot;] or title[not(@level)]) and title[@level=&amp;quot;m&amp;quot;] and title[@level=&amp;quot;s&amp;quot;]]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;biblStruct&amp;gt;&lt;br /&gt;
        &amp;lt;analytic&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:when test=&#039;author&#039;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select=&#039;author&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:call-template name=&#039;authors&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[(@level=&amp;quot;a&amp;quot; or @level=&amp;quot;&amp;quot; or not(@level))]&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/analytic&amp;gt;&lt;br /&gt;
        &amp;lt;monogr&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;m&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;series&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;s&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;date|publisher|pubPlace|biblScope&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;publisher&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;pubPlace&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;edition&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;date&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;biblScope&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/imprint&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;/series&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;note&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/biblStruct&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- complete bibl with titles (m)+s --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[not(title[@level=&amp;quot;a&amp;quot;]) and (title[@level=&amp;quot;m&amp;quot;] or title[@level=&amp;quot;&amp;quot;] or title[not(@level)]) and title[@level=&amp;quot;s&amp;quot;]]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;biblStruct&amp;gt;&lt;br /&gt;
        &amp;lt;monogr&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:when test=&#039;author&#039;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select=&#039;author&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:call-template name=&#039;authors&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;m&amp;quot; or @level=&amp;quot;&amp;quot; or not(@level)]&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;date|publisher|pubPlace|biblScope&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;publisher&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;pubPlace&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;edition&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;date&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;biblScope&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/imprint&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;series&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;s&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/series&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;note&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/biblStruct&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- bibl with title (a)+j --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[title[not(@level) or @level=&amp;quot;a&amp;quot;] and title[@level=&amp;quot;j&amp;quot;]]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;biblStruct&amp;gt;&lt;br /&gt;
        &amp;lt;analytic&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:when test=&#039;author&#039;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select=&#039;author&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:call-template name=&#039;authors&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[not(@level) or @level=&amp;quot;a&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/analytic&amp;gt;&lt;br /&gt;
        &amp;lt;monogr&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;j&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;date|publisher|pubPlace|biblScope&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;publisher&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;pubPlace&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;edition&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;date&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;biblScope&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/imprint&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;note&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/biblStruct&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- complete bibl with title (a)+m --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[title[not(@level) or @level=&amp;quot;a&amp;quot;] and title[@level=&amp;quot;m&amp;quot;]]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;biblStruct&amp;gt;&lt;br /&gt;
        &amp;lt;analytic&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:when test=&#039;author&#039;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select=&#039;author&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:call-template name=&#039;authors&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[not(@level) or @level=&amp;quot;a&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/analytic&amp;gt;&lt;br /&gt;
        &amp;lt;monogr&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;m&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;date|publisher|pubPlace|biblScope&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;publisher&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;pubPlace&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;edition&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;date&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;biblScope&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/imprint&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;note&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/biblStruct&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- bibl with either title m only or blank only, all without a,j,s --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[(not(title[@level=&amp;quot;a&amp;quot;]) and not(title[@level=&amp;quot;j&amp;quot;]) and not(title[@level=&amp;quot;s&amp;quot;])) and ((title[@level=&amp;quot;m&amp;quot;] and not(title[not(@level)])) or (not(title[@level=&amp;quot;m&amp;quot;]) and title[not(@level)]))]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;biblStruct&amp;gt;&lt;br /&gt;
        &amp;lt;monogr&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:when test=&#039;author&#039;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select=&#039;author&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:call-template name=&#039;authors&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;date|publisher|pubPlace|biblScope&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;publisher&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;pubPlace&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;edition&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;date&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;biblScope&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/imprint&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;note&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/biblStruct&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- incomplete bibl with title only! the bibl should have an @id --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template name=&#039;authors&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:if test=&#039;not(@id)&#039;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:text&amp;gt;ERROR: bibl has neither author nor id! &amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:if test=&#039;@id&#039;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name=&#039;ti&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:value-of select=&#039;@id&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&#039;//link&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;contains(@targets,$ti)&#039;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:call-template name=&#039;recursively-apply-first-of&#039;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:with-param name=&#039;idstr&#039;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&#039;@targets&#039; /&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:with-param&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Calls all author/name templates with id in given param string --&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Partly stolen from http://wwbota.free.fr/XSLT_models/split-string.xslt--&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template name=&#039;recursively-apply-first-of&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:param name=&#039;idstr&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:variable name=&amp;quot;first&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name=&amp;quot;first0&amp;quot; select=&amp;quot;substring-before($idstr,&#039; &#039;)&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:when test=&amp;quot;$first0&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:copy-of select=&amp;quot;$first0&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:copy-of select=&amp;quot;$idstr&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:if test=&amp;quot;string-length($first)&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:call-template name=&#039;recursively-apply-first-of&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:with-param name=&amp;quot;idstr&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;substring-after($idstr,&#039; &#039;)&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:with-param&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;//author[@id=$first]|//name[@id=$first]&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--=========================================--&amp;gt;&lt;br /&gt;
    &amp;lt;!-- all elements except title: do deep copy --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@* | author | title [name(..)=&#039;bibl&#039;] | editor | &lt;br /&gt;
      biblScope | edition | date[name(..)=&#039;bibl&#039;] | publisher | pubPlace | &lt;br /&gt;
      note[name(..)=&#039;bibl&#039;]&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:when test=&#039;@corresp&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;id(@corresp)&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:copy&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&amp;quot;@*[not(name()=&#039;TEIform&#039;)]|node()|text()&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:copy&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl/series&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:text&amp;gt;abc&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:copy-of select=&#039;*/node()&#039; /&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- copy CDATA within elements except titles --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;bibl/text()|author/text()|editor/text()|title[name(..)=&#039;bibl&#039;]/text()|biblScope/text()|date[name(..)=&#039;bibl&#039;]/text()|edition/text()|pubPlace/text()|publisher/text()|note[name(..)=&#039;bibl&#039;]/text()&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:copy /&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:XSLT]]&lt;/div&gt;</summary>
		<author><name>Rwst</name></author>
	</entry>
	<entry>
		<id>https://wiki.tei-c.org/index.php?title=Bibl2struct.xslt&amp;diff=4188</id>
		<title>Bibl2struct.xslt</title>
		<link rel="alternate" type="text/html" href="https://wiki.tei-c.org/index.php?title=Bibl2struct.xslt&amp;diff=4188"/>
		<updated>2008-02-05T10:47:33Z</updated>

		<summary type="html">&lt;p&gt;Rwst: New page: == Summary ==   Transforms TEI &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt;s into &amp;lt;biblstruct&amp;gt; bibliographies.   Ignores all other content. Produces a &amp;lt;listBibl&amp;gt;&amp;lt;/nowiki&amp;gt;.  == Required Input ==  This document will take...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
  Transforms TEI &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt;s into &amp;lt;biblstruct&amp;gt; bibliographies.&lt;br /&gt;
  Ignores all other content. Produces a &amp;lt;listBibl&amp;gt;&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Required Input ==&lt;br /&gt;
&lt;br /&gt;
This document will take any XML file, not just TEI XML, and processes all&lt;br /&gt;
&#039;&#039;complete&#039;&#039; &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; bibliographies into equivalent &amp;lt;biblStructs&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
  Description: the transform differentiates five major cases from&lt;br /&gt;
  the (non)-existence of &amp;lt;title&amp;gt;s of certain @level (a,j,m,s). The&lt;br /&gt;
    level in parens, e.g. (a) means &#039;level a or without/blank level&#039;.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
    * &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; has (a)+m+s titles ==&amp;gt; excerpt from work in series&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
    * &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; has   (m)+s titles ==&amp;gt; work in series&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
    * &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; has   (a)+j titles ==&amp;gt; journal article&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
    * &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; has   (a)+m titles ==&amp;gt; excerpt from monograph&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
    * &amp;lt;nowiki&amp;gt;&amp;lt;bibl&amp;gt; has     (m) titles ==&amp;gt; monograph&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;When an element contains @corresp the text is taken from that id.&lt;br /&gt;
  When the author is missing and &amp;lt;bibl&amp;gt; has an id, then we look for&lt;br /&gt;
    the id in &amp;lt;link&amp;gt;s and, when found, for authors therein.&lt;br /&gt;
  When the document contains a &amp;lt;join result=&#039;bibl&#039; /&amp;gt;, we build that bibl&lt;br /&gt;
    and process it like the others.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Expected Output ==&lt;br /&gt;
  &amp;lt;nowiki&amp;gt; a &amp;lt;listBibl&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Known Restrictions or Problems ==&lt;br /&gt;
See TODO in the stylesheet.&lt;br /&gt;
&lt;br /&gt;
Please add any comments to the &#039;discussion&#039; tab. For payed support, please&lt;br /&gt;
mail the author (address within stylesheet).&lt;br /&gt;
&lt;br /&gt;
== Stylesheet ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!-- bibl2struct.xsl&lt;br /&gt;
  Transforms TEI &amp;lt;bibl&amp;gt;s into &amp;lt;biblstruct&amp;gt; bibliographies&lt;br /&gt;
  Author: (c) 2008 Ralf Stephan &amp;lt;ralf@ark.in-berlin.de&amp;gt;&lt;br /&gt;
  Published under GPL 2.0, see http://www.gnu.org/licenses/gpl-2.0.html&lt;br /&gt;
&lt;br /&gt;
  TODO:&lt;br /&gt;
  =====&lt;br /&gt;
  o  if the bibl has an @id and an author, we don&#039;t look further but&lt;br /&gt;
     there could be more authors &amp;lt;link&amp;gt;ed&lt;br /&gt;
  o  &amp;lt;title type=&#039;alt&#039;&amp;gt; with &amp;lt;editor role=&#039;translator&#039;&amp;gt;&lt;br /&gt;
  o  assume from existing &amp;lt;author /&amp;gt; that author of ref is author of work?&lt;br /&gt;
  o  handle &amp;lt;bibl&amp;gt;...&amp;lt;series&amp;gt;...&amp;lt;/series&amp;gt;...&amp;lt;/bibl&amp;gt;&lt;br /&gt;
  o  what do we do we with refs without title?&lt;br /&gt;
  o  what if we have &amp;lt;author&amp;gt;&amp;lt;corr&amp;gt;...&amp;lt;/corr&amp;gt;&amp;lt;/author&amp;gt; ?&lt;br /&gt;
  --&amp;gt;&lt;br /&gt;
  &amp;lt;xsl:stylesheet xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot; version=&amp;quot;1.0&amp;quot;&lt;br /&gt;
    xmlns:exsl=&amp;quot;http://exslt.org/common&amp;quot; extension-element-prefixes=&amp;quot;exsl&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;&lt;br /&gt;
	    doctype-public=&amp;quot;-//TEI P5//DTD Main Document Type//EN&amp;quot; &lt;br /&gt;
	    doctype-system=&amp;quot;tei2.dtd&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Include a link to CSS --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:processing-instruction name=&amp;quot;xml-stylesheet&amp;quot;&amp;gt;href=&amp;quot;eb-bib.css&amp;quot; type=&amp;quot;text/css&amp;quot;&amp;lt;/xsl:processing-instruction&amp;gt;&lt;br /&gt;
      &amp;lt;listBibl&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates /&amp;gt;&lt;br /&gt;
      &amp;lt;/listBibl&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- remove all default attributes --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@status&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@default&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@org[.=&#039;uniform&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@sample[.=&#039;complete&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@part[.=&#039;N&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@direct[.=&#039;unspecified&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@targOrder[.=&#039;U&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@from[.=&#039;ROOT&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@anchored[.=&#039;yes&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@place[.=&#039;unspecified&#039;]&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;teiHeader/@type&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- do not copy all CDATA, we copy explicitly later --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;text()&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- ignore teiHeader --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;teiHeader&#039; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- &amp;lt;bibl&amp;gt; without &amp;lt;title&amp;gt; does nothing --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[not(title)]&#039; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- handle &amp;lt;join result=&#039;bibl&#039;&amp;gt; here --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;join[@result=&amp;quot;bibl&amp;quot;]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:variable name=&#039;joint&#039;&amp;gt;&lt;br /&gt;
        &amp;lt;bibl&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:call-template name=&#039;chomp-targets-recursively&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:with-param name=&#039;idstr&#039;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&#039;@targets&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:with-param&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
        &amp;lt;/bibl&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:apply-templates select=&#039;exsl:node-set($joint)//bibl&#039; /&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Calls copy-of with all ids in targets string --&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Partly stolen from http://wwbota.free.fr/XSLT_models/split-string.xslt--&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template name=&#039;chomp-targets-recursively&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:param name=&#039;idstr&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:variable name=&amp;quot;first&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name=&amp;quot;first0&amp;quot; select=&amp;quot;substring-before($idstr,&#039; &#039;)&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:when test=&amp;quot;$first0&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:copy-of select=&amp;quot;$first0&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:copy-of select=&amp;quot;$idstr&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:if test=&amp;quot;string-length($first)&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:call-template name=&#039;chomp-targets-recursively&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:with-param name=&amp;quot;idstr&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;substring-after($idstr,&#039; &#039;)&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:with-param&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:copy-of select=&#039;//*[@id=$first]&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--===================================--&amp;gt;&lt;br /&gt;
    &amp;lt;!-- complete bibl with titles (a)+m+s --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[(title[@level=&amp;quot;a&amp;quot;] or title[@level=&amp;quot;&amp;quot;] or title[not(@level)]) and title[@level=&amp;quot;m&amp;quot;] and title[@level=&amp;quot;s&amp;quot;]]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;biblStruct&amp;gt;&lt;br /&gt;
        &amp;lt;analytic&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:when test=&#039;author&#039;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select=&#039;author&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:call-template name=&#039;authors&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[(@level=&amp;quot;a&amp;quot; or @level=&amp;quot;&amp;quot; or not(@level))]&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/analytic&amp;gt;&lt;br /&gt;
        &amp;lt;monogr&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;m&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;series&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;s&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;date|publisher|pubPlace|biblScope&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;publisher&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;pubPlace&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;edition&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;date&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;biblScope&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/imprint&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;/series&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;note&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/biblStruct&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- complete bibl with titles (m)+s --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[not(title[@level=&amp;quot;a&amp;quot;]) and (title[@level=&amp;quot;m&amp;quot;] or title[@level=&amp;quot;&amp;quot;] or title[not(@level)]) and title[@level=&amp;quot;s&amp;quot;]]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;biblStruct&amp;gt;&lt;br /&gt;
        &amp;lt;monogr&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:when test=&#039;author&#039;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select=&#039;author&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:call-template name=&#039;authors&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;m&amp;quot; or @level=&amp;quot;&amp;quot; or not(@level)]&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;date|publisher|pubPlace|biblScope&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;publisher&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;pubPlace&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;edition&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;date&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;biblScope&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/imprint&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;series&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;s&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/series&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;note&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/biblStruct&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- bibl with title (a)+j --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[title[not(@level) or @level=&amp;quot;a&amp;quot;] and title[@level=&amp;quot;j&amp;quot;]]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;biblStruct&amp;gt;&lt;br /&gt;
        &amp;lt;analytic&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:when test=&#039;author&#039;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select=&#039;author&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:call-template name=&#039;authors&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[not(@level) or @level=&amp;quot;a&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/analytic&amp;gt;&lt;br /&gt;
        &amp;lt;monogr&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;j&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;date|publisher|pubPlace|biblScope&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;publisher&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;pubPlace&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;edition&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;date&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;biblScope&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/imprint&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;note&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/biblStruct&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- complete bibl with title (a)+m --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[title[not(@level) or @level=&amp;quot;a&amp;quot;] and title[@level=&amp;quot;m&amp;quot;]]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;biblStruct&amp;gt;&lt;br /&gt;
        &amp;lt;analytic&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:when test=&#039;author&#039;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select=&#039;author&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:call-template name=&#039;authors&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[not(@level) or @level=&amp;quot;a&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/analytic&amp;gt;&lt;br /&gt;
        &amp;lt;monogr&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;editor&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title[@level=&amp;quot;m&amp;quot;]&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;date|publisher|pubPlace|biblScope&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;publisher&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;pubPlace&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;edition&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;date&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;biblScope&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/imprint&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;note&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/biblStruct&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- bibl with either title m only or blank only, all without a,j,s --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl[(not(title[@level=&amp;quot;a&amp;quot;]) and not(title[@level=&amp;quot;j&amp;quot;]) and not(title[@level=&amp;quot;s&amp;quot;])) and ((title[@level=&amp;quot;m&amp;quot;] and not(title[not(@level)])) or (not(title[@level=&amp;quot;m&amp;quot;]) and title[not(@level)]))]&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;biblStruct&amp;gt;&lt;br /&gt;
        &amp;lt;monogr&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:when test=&#039;author&#039;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select=&#039;author&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:call-template name=&#039;authors&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;title&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;date|publisher|pubPlace|biblScope&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;publisher&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;pubPlace&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;edition&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;date&#039; /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&#039;biblScope&#039; /&amp;gt;&lt;br /&gt;
          &amp;lt;/imprint&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;note&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/biblStruct&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- incomplete bibl with title only! the bibl should have an @id --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template name=&#039;authors&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:if test=&#039;not(@id)&#039;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:text&amp;gt;ERROR: bibl has neither author nor id! &amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:if test=&#039;@id&#039;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name=&#039;ti&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:value-of select=&#039;@id&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&#039;//link&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test=&#039;contains(@targets,$ti)&#039;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:call-template name=&#039;recursively-apply-first-of&#039;&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:with-param name=&#039;idstr&#039;&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select=&#039;@targets&#039; /&amp;gt;&lt;br /&gt;
              &amp;lt;/xsl:with-param&amp;gt;&lt;br /&gt;
            &amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Calls all author/name templates with id in given param string --&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Partly stolen from http://wwbota.free.fr/XSLT_models/split-string.xslt--&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template name=&#039;recursively-apply-first-of&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:param name=&#039;idstr&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:variable name=&amp;quot;first&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name=&amp;quot;first0&amp;quot; select=&amp;quot;substring-before($idstr,&#039; &#039;)&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:when test=&amp;quot;$first0&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:copy-of select=&amp;quot;$first0&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:copy-of select=&amp;quot;$idstr&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:if test=&amp;quot;string-length($first)&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:call-template name=&#039;recursively-apply-first-of&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:with-param name=&amp;quot;idstr&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;substring-after($idstr,&#039; &#039;)&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:with-param&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select=&#039;//author[@id=$first]|//name[@id=$first]&#039; /&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--=========================================--&amp;gt;&lt;br /&gt;
    &amp;lt;!-- all elements except title: do deep copy --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@* | author | title [name(..)=&#039;bibl&#039;] | editor | &lt;br /&gt;
      biblScope | edition | date[name(..)=&#039;bibl&#039;] | publisher | pubPlace | &lt;br /&gt;
      note[name(..)=&#039;bibl&#039;]&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:when test=&#039;@corresp&#039;&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select=&#039;id(@corresp)&#039; /&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:copy&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select=&amp;quot;@*[not(name()=&#039;TEIform&#039;)]|node()|text()&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/xsl:copy&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;xsl:template match=&#039;bibl/series&#039;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:text&amp;gt;abc&amp;lt;/xsl:text&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:copy-of select=&#039;*/node()&#039; /&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- copy CDATA within elements except titles --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;bibl/text()|author/text()|editor/text()|title[name(..)=&#039;bibl&#039;]/text()|biblScope/text()|date[name(..)=&#039;bibl&#039;]/text()|edition/text()|pubPlace/text()|publisher/text()|note[name(..)=&#039;bibl&#039;]/text()&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:copy /&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:XSLT]]&lt;/div&gt;</summary>
		<author><name>Rwst</name></author>
	</entry>
</feed>