<?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?title=Special:Contributions/Rwst"/>
	<updated>2026-04-21T10:06:05Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.32.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;
''complete'' &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 'level a or without/blank level'.&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='bibl' /&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 'discussion' 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 'level a or without/blank level'.&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='bibl' /&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't work at all&lt;br /&gt;
      - &amp;lt;edition&amp;gt; wasn't printed&lt;br /&gt;
      - journal refs without title weren'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='alt'&amp;gt; with &amp;lt;editor role='translator'&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[.='uniform']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@sample[.='complete']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@part[.='N']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@direct[.='unspecified']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@targOrder[.='U']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@from[.='ROOT']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@anchored[.='yes']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@place[.='unspecified']&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='teiHeader' /&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='bibl[not(title)]' /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- handle &amp;lt;join result='bibl'&amp;gt; here --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match='join[@result=&amp;quot;bibl&amp;quot;]' priority='1'&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:variable name='joint'&amp;gt;&lt;br /&gt;
        &amp;lt;bibl&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:call-template name='chomp-targets-recursively'&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:with-param name='idstr'&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select='@targets' /&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='exsl:node-set($joint)//bibl' /&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='chomp-targets-recursively'&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:param name='idstr' /&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,' ')&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='chomp-targets-recursively'&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,' ')&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='//*[@id=$first]' /&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='bibl[*[@corresp]]' priority='1'&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:variable name='tmp1'&amp;gt;&lt;br /&gt;
        &amp;lt;bibl&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='*' /&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='exsl:node-set($tmp1)//bibl' /&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='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;]]'&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='author' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[(@level=&amp;quot;a&amp;quot; or @level=&amp;quot;&amp;quot; or not(@level))]' /&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='editor' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[@level=&amp;quot;m&amp;quot;]' /&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='editor' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[@level=&amp;quot;s&amp;quot;]' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='date|edition|publisher|pubPlace|biblScope'&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='publisher' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='pubPlace' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='edition' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='date' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='biblScope' /&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='note' /&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='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;]]'&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='author' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[@level=&amp;quot;m&amp;quot; or @level=&amp;quot;&amp;quot; or not(@level)]' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='date|edition|publisher|pubPlace|biblScope'&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='publisher' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='pubPlace' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='edition' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='date' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='biblScope' /&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='editor' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[@level=&amp;quot;s&amp;quot;]' /&amp;gt;&lt;br /&gt;
        &amp;lt;/series&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select='note' /&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='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;]]'&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='author' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[not(@level) or @level=&amp;quot;a&amp;quot;]' /&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='title[@level=&amp;quot;j&amp;quot;]' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='date|publisher|pubPlace|biblScope'&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='publisher' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='pubPlace' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='date' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='biblScope' /&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='editor' /&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select='note' /&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='bibl[title[not(@level) or @level=&amp;quot;a&amp;quot;] and title[@level=&amp;quot;m&amp;quot;]]'&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='author' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[not(@level) or @level=&amp;quot;a&amp;quot;]' /&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='editor' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[@level=&amp;quot;m&amp;quot;]' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='date|edition|publisher|pubPlace|biblScope'&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='publisher' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='pubPlace' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='edition' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='date' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='biblScope' /&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='note' /&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='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)]))]'&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='author' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='editor' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='date|edition|publisher|pubPlace|biblScope'&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='publisher' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='pubPlace' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='edition' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='date' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='biblScope' /&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='note' /&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='@corresp'&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:variable name='tmp'&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='id(@corresp)/@*' /&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:copy-of select='id(@corresp)/node()' /&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='exsl:node-set($tmp)//bibl/*' /&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()='TEIform')]|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='bibl/series'&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='*/node()' /&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;
''complete'' &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 'level a or without/blank level'.&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='bibl' /&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 'discussion' 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 'level a or without/blank level'.&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='bibl' /&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't work at all&lt;br /&gt;
      - &amp;lt;edition&amp;gt; wasn't printed&lt;br /&gt;
      - journal refs without title weren'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='alt'&amp;gt; with &amp;lt;editor role='translator'&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[.='uniform']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@sample[.='complete']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@part[.='N']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@direct[.='unspecified']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@targOrder[.='U']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@from[.='ROOT']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@anchored[.='yes']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@place[.='unspecified']&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='teiHeader' /&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='bibl[not(title)]' /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- handle &amp;lt;join result='bibl'&amp;gt; here --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match='join[@result=&amp;quot;bibl&amp;quot;]' priority='1'&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:variable name='joint'&amp;gt;&lt;br /&gt;
        &amp;lt;bibl&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:call-template name='chomp-targets-recursively'&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:with-param name='idstr'&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select='@targets' /&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='exsl:node-set($joint)//bibl' /&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='chomp-targets-recursively'&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:param name='idstr' /&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,' ')&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='chomp-targets-recursively'&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,' ')&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='//*[@id=$first]' /&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='bibl[*[@corresp]]' priority='1'&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:variable name='tmp1'&amp;gt;&lt;br /&gt;
        &amp;lt;bibl&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='*' /&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='exsl:node-set($tmp1)//bibl' /&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='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;]]'&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='author' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[(@level=&amp;quot;a&amp;quot; or @level=&amp;quot;&amp;quot; or not(@level))]' /&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='editor' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[@level=&amp;quot;m&amp;quot;]' /&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='editor' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[@level=&amp;quot;s&amp;quot;]' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='date|edition|publisher|pubPlace|biblScope'&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='publisher' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='pubPlace' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='edition' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='date' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='biblScope' /&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='note' /&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='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;]]'&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='author' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[@level=&amp;quot;m&amp;quot; or @level=&amp;quot;&amp;quot; or not(@level)]' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='date|edition|publisher|pubPlace|biblScope'&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='publisher' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='pubPlace' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='edition' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='date' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='biblScope' /&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='editor' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[@level=&amp;quot;s&amp;quot;]' /&amp;gt;&lt;br /&gt;
        &amp;lt;/series&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select='note' /&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='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;]]'&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='author' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[not(@level) or @level=&amp;quot;a&amp;quot;]' /&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='title[@level=&amp;quot;j&amp;quot;]' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='date|publisher|pubPlace|biblScope'&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='publisher' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='pubPlace' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='date' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='biblScope' /&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='editor' /&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select='note' /&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='bibl[title[not(@level) or @level=&amp;quot;a&amp;quot;] and title[@level=&amp;quot;m&amp;quot;]]'&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='author' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[not(@level) or @level=&amp;quot;a&amp;quot;]' /&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='editor' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[@level=&amp;quot;m&amp;quot;]' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='date|edition|publisher|pubPlace|biblScope'&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='publisher' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='pubPlace' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='edition' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='date' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='biblScope' /&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='note' /&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='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)]))]'&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='author' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='editor' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='date|edition|publisher|pubPlace|biblScope'&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='publisher' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='pubPlace' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='edition' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='date' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='biblScope' /&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='note' /&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='@corresp'&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:variable name='tmp'&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='id(@corresp)/@*' /&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:copy-of select='id(@corresp)/node()' /&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='exsl:node-set($tmp)//bibl/*' /&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()='TEIform')]|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='bibl/series'&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='*/node()' /&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;
''complete'' &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 'level a or without/blank level'.&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='bibl' /&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 'discussion' 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 'level a or without/blank level'.&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='bibl' /&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't work at all&lt;br /&gt;
      - &amp;lt;edition&amp;gt; wasn't printed&lt;br /&gt;
      - journal refs without title weren'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='alt'&amp;gt; with &amp;lt;editor role='translator'&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[.='uniform']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@sample[.='complete']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@part[.='N']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@direct[.='unspecified']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@targOrder[.='U']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@from[.='ROOT']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@anchored[.='yes']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@place[.='unspecified']&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='teiHeader' /&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='bibl[not(title)]' /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- handle &amp;lt;join result='bibl'&amp;gt; here --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match='join[@result=&amp;quot;bibl&amp;quot;]' priority='1'&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:variable name='joint'&amp;gt;&lt;br /&gt;
        &amp;lt;bibl&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:call-template name='chomp-targets-recursively'&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:with-param name='idstr'&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select='@targets' /&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='exsl:node-set($joint)//bibl' /&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='chomp-targets-recursively'&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:param name='idstr' /&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,' ')&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='chomp-targets-recursively'&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,' ')&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='//*[@id=$first]' /&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='bibl[*[@corresp]]' priority='1'&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:variable name='tmp1'&amp;gt;&lt;br /&gt;
        &amp;lt;bibl&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='*' /&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='exsl:node-set($tmp1)//bibl' /&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='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;]]'&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='author' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[(@level=&amp;quot;a&amp;quot; or @level=&amp;quot;&amp;quot; or not(@level))]' /&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='editor' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[@level=&amp;quot;m&amp;quot;]' /&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='editor' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[@level=&amp;quot;s&amp;quot;]' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='date|edition|publisher|pubPlace|biblScope'&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='publisher' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='pubPlace' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='edition' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='date' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='biblScope' /&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='note' /&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='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;]]'&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='author' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[@level=&amp;quot;m&amp;quot; or @level=&amp;quot;&amp;quot; or not(@level)]' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='date|edition|publisher|pubPlace|biblScope'&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='publisher' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='pubPlace' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='edition' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='date' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='biblScope' /&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='editor' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[@level=&amp;quot;s&amp;quot;]' /&amp;gt;&lt;br /&gt;
        &amp;lt;/series&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select='note' /&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='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;]]'&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='author' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[not(@level) or @level=&amp;quot;a&amp;quot;]' /&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='title[@level=&amp;quot;j&amp;quot;]' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='date|publisher|pubPlace|biblScope'&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='publisher' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='pubPlace' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='date' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='biblScope' /&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='editor' /&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select='note' /&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='bibl[title[not(@level) or @level=&amp;quot;a&amp;quot;] and title[@level=&amp;quot;m&amp;quot;]]'&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='author' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[not(@level) or @level=&amp;quot;a&amp;quot;]' /&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='editor' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[@level=&amp;quot;m&amp;quot;]' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='date|edition|publisher|pubPlace|biblScope'&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='publisher' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='pubPlace' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='edition' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='date' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='biblScope' /&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='note' /&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='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)]))]'&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='author' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='editor' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='date|edition|publisher|pubPlace|biblScope'&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='publisher' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='pubPlace' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='edition' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='date' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='biblScope' /&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='note' /&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='@corresp'&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:variable name='tmp'&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='id(@corresp)/@*' /&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:copy-of select='id(@corresp)/node()' /&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='exsl:node-set($tmp)//bibl/*' /&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()='TEIform')]|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='bibl/series'&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='*/node()' /&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;
''complete'' &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 'level a or without/blank level'.&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='bibl' /&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 'discussion' 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 'level a or without/blank level'.&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='bibl' /&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't work at all&lt;br /&gt;
      - &amp;lt;edition&amp;gt; wasn't printed&lt;br /&gt;
      - journal refs without title weren'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='alt'&amp;gt; with &amp;lt;editor role='translator'&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[.='uniform']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@sample[.='complete']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@part[.='N']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@direct[.='unspecified']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@targOrder[.='U']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@from[.='ROOT']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@anchored[.='yes']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@place[.='unspecified']&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='teiHeader' /&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='bibl[not(title)]' /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- handle &amp;lt;join result='bibl'&amp;gt; here --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match='join[@result=&amp;quot;bibl&amp;quot;]' priority='1'&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:variable name='joint'&amp;gt;&lt;br /&gt;
        &amp;lt;bibl&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:call-template name='chomp-targets-recursively'&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:with-param name='idstr'&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select='@targets' /&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='exsl:node-set($joint)//bibl' /&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='chomp-targets-recursively'&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:param name='idstr' /&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,' ')&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='chomp-targets-recursively'&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,' ')&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='//*[@id=$first]' /&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='bibl[*[@corresp]]' priority='1'&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:variable name='tmp1'&amp;gt;&lt;br /&gt;
        &amp;lt;bibl&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='*' /&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='exsl:node-set($tmp1)//bibl' /&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='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;]]'&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='author' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[(@level=&amp;quot;a&amp;quot; or @level=&amp;quot;&amp;quot; or not(@level))]' /&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='editor' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[@level=&amp;quot;m&amp;quot;]' /&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='editor' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[@level=&amp;quot;s&amp;quot;]' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='date|edition|publisher|pubPlace|biblScope'&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='publisher' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='pubPlace' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='edition' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='date' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='biblScope' /&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='note' /&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='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;]]'&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='author' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[@level=&amp;quot;m&amp;quot; or @level=&amp;quot;&amp;quot; or not(@level)]' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='date|edition|publisher|pubPlace|biblScope'&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='publisher' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='pubPlace' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='edition' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='date' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='biblScope' /&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='editor' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[@level=&amp;quot;s&amp;quot;]' /&amp;gt;&lt;br /&gt;
        &amp;lt;/series&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select='note' /&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='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;]]'&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='author' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[not(@level) or @level=&amp;quot;a&amp;quot;]' /&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='title[@level=&amp;quot;j&amp;quot;]' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='date|publisher|pubPlace|biblScope'&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='publisher' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='pubPlace' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='date' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='biblScope' /&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='editor' /&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select='note' /&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='bibl[title[not(@level) or @level=&amp;quot;a&amp;quot;] and title[@level=&amp;quot;m&amp;quot;]]'&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='author' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[not(@level) or @level=&amp;quot;a&amp;quot;]' /&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='editor' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[@level=&amp;quot;m&amp;quot;]' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='date|edition|publisher|pubPlace|biblScope'&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='publisher' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='pubPlace' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='edition' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='date' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='biblScope' /&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='note' /&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='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)]))]'&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='author' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='editor' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='date|edition|publisher|pubPlace|biblScope'&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='publisher' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='pubPlace' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='edition' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='date' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='biblScope' /&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='note' /&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='@corresp'&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:variable name='tmp'&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='id(@corresp)/@*' /&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:copy-of select='id(@corresp)/node()' /&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='exsl:node-set($tmp)//bibl/*' /&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()='TEIform')]|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='bibl/series'&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='*/node()' /&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;
''complete'' &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 'level a or without/blank level'.&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='bibl' /&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 'discussion' 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 'level a or without/blank level'.&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='bibl' /&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't work at all&lt;br /&gt;
      - &amp;lt;edition&amp;gt; wasn't printed&lt;br /&gt;
      - journal refs without title weren'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='alt'&amp;gt; with &amp;lt;editor role='translator'&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[.='uniform']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@sample[.='complete']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@part[.='N']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@direct[.='unspecified']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@targOrder[.='U']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@from[.='ROOT']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@anchored[.='yes']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@place[.='unspecified']&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='teiHeader' /&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='bibl[not(title)]' /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- handle &amp;lt;join result='bibl'&amp;gt; here --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match='join[@result=&amp;quot;bibl&amp;quot;]' priority='1'&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:variable name='joint'&amp;gt;&lt;br /&gt;
        &amp;lt;bibl&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:call-template name='chomp-targets-recursively'&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:with-param name='idstr'&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select='@targets' /&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='exsl:node-set($joint)//bibl' /&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='chomp-targets-recursively'&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:param name='idstr' /&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,' ')&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='chomp-targets-recursively'&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,' ')&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='//*[@id=$first]' /&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='bibl[*[@corresp]]' priority='1'&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:variable name='tmp1'&amp;gt;&lt;br /&gt;
        &amp;lt;bibl&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='*' /&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='exsl:node-set($tmp1)//bibl' /&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='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;]]'&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='author' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[(@level=&amp;quot;a&amp;quot; or @level=&amp;quot;&amp;quot; or not(@level))]' /&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='editor' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[@level=&amp;quot;m&amp;quot;]' /&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='editor' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[@level=&amp;quot;s&amp;quot;]' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='date|edition|publisher|pubPlace|biblScope'&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='publisher' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='pubPlace' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='edition' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='date' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='biblScope' /&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='note' /&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='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;]]'&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='author' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[@level=&amp;quot;m&amp;quot; or @level=&amp;quot;&amp;quot; or not(@level)]' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='date|edition|publisher|pubPlace|biblScope'&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='publisher' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='pubPlace' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='edition' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='date' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='biblScope' /&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='editor' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[@level=&amp;quot;s&amp;quot;]' /&amp;gt;&lt;br /&gt;
        &amp;lt;/series&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select='note' /&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='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;]]'&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='author' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[not(@level) or @level=&amp;quot;a&amp;quot;]' /&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='title[@level=&amp;quot;j&amp;quot;]' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='date|publisher|pubPlace|biblScope'&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='publisher' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='pubPlace' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='date' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='biblScope' /&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='editor' /&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select='note' /&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='bibl[title[not(@level) or @level=&amp;quot;a&amp;quot;] and title[@level=&amp;quot;m&amp;quot;]]'&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='author' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[not(@level) or @level=&amp;quot;a&amp;quot;]' /&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='editor' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[@level=&amp;quot;m&amp;quot;]' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='date|edition|publisher|pubPlace|biblScope'&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='publisher' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='pubPlace' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='edition' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='date' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='biblScope' /&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='note' /&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='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)]))]'&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='author' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='editor' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='date|edition|publisher|pubPlace|biblScope'&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='publisher' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='pubPlace' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='edition' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='date' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='biblScope' /&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='note' /&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='@corresp'&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:variable name='tmp'&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='id(@corresp)/@*' /&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:copy-of select='id(@corresp)/node()' /&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='exsl:node-set($tmp)//bibl/*' /&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()='TEIform')]|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='bibl/series'&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='*/node()' /&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;
''complete'' &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 'level a or without/blank level'.&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='bibl' /&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 'discussion' 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'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='alt'&amp;gt; with &amp;lt;editor role='translator'&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[.='uniform']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@sample[.='complete']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@part[.='N']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@direct[.='unspecified']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@targOrder[.='U']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@from[.='ROOT']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@anchored[.='yes']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@place[.='unspecified']&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='teiHeader' /&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='bibl[not(title)]' /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- handle &amp;lt;join result='bibl'&amp;gt; here --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match='join[@result=&amp;quot;bibl&amp;quot;]'&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:variable name='joint'&amp;gt;&lt;br /&gt;
        &amp;lt;bibl&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:call-template name='chomp-targets-recursively'&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:with-param name='idstr'&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select='@targets' /&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='exsl:node-set($joint)//bibl' /&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='chomp-targets-recursively'&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:param name='idstr' /&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,' ')&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='chomp-targets-recursively'&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,' ')&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='//*[@id=$first]' /&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='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;]]'&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='author'&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select='author' /&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='authors' /&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='title[(@level=&amp;quot;a&amp;quot; or @level=&amp;quot;&amp;quot; or not(@level))]' /&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='editor' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[@level=&amp;quot;m&amp;quot;]' /&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='editor' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[@level=&amp;quot;s&amp;quot;]' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='date|publisher|pubPlace|biblScope'&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='publisher' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='pubPlace' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='edition' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='date' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='biblScope' /&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='note' /&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='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;]]'&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='author'&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select='author' /&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='authors' /&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='title[@level=&amp;quot;m&amp;quot; or @level=&amp;quot;&amp;quot; or not(@level)]' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='date|publisher|pubPlace|biblScope'&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='publisher' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='pubPlace' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='edition' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='date' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='biblScope' /&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='editor' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[@level=&amp;quot;s&amp;quot;]' /&amp;gt;&lt;br /&gt;
        &amp;lt;/series&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select='note' /&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='bibl[title[not(@level) or @level=&amp;quot;a&amp;quot;] and title[@level=&amp;quot;j&amp;quot;]]'&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='author'&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select='author' /&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='authors' /&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='title[not(@level) or @level=&amp;quot;a&amp;quot;]' /&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='title[@level=&amp;quot;j&amp;quot;]' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='date|publisher|pubPlace|biblScope'&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='publisher' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='pubPlace' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='edition' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='date' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='biblScope' /&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='editor' /&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select='note' /&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='bibl[title[not(@level) or @level=&amp;quot;a&amp;quot;] and title[@level=&amp;quot;m&amp;quot;]]'&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='author'&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select='author' /&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='authors' /&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='title[not(@level) or @level=&amp;quot;a&amp;quot;]' /&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='editor' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[@level=&amp;quot;m&amp;quot;]' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='date|publisher|pubPlace|biblScope'&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='publisher' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='pubPlace' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='edition' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='date' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='biblScope' /&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='note' /&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='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)]))]'&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='author'&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select='author' /&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='authors' /&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='title' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='date|publisher|pubPlace|biblScope'&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='publisher' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='pubPlace' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='edition' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='date' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='biblScope' /&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='note' /&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='authors'&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:if test='not(@id)'&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='@id'&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name='ti'&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:value-of select='@id' /&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select='//link'&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='contains(@targets,$ti)'&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:call-template name='recursively-apply-first-of'&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:with-param name='idstr'&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select='@targets' /&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='recursively-apply-first-of'&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:param name='idstr' /&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,' ')&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='recursively-apply-first-of'&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,' ')&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='//author[@id=$first]|//name[@id=$first]' /&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(..)='bibl'] | editor | &lt;br /&gt;
      biblScope | edition | date[name(..)='bibl'] | publisher | pubPlace | &lt;br /&gt;
      note[name(..)='bibl']&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:when test='@corresp'&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='id(@corresp)' /&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()='TEIform')]|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='bibl/series'&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='*/node()' /&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(..)='bibl']/text()|biblScope/text()|date[name(..)='bibl']/text()|edition/text()|pubPlace/text()|publisher/text()|note[name(..)='bibl']/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;
''complete'' &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 'level a or without/blank level'.&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='bibl' /&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 'discussion' 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'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='alt'&amp;gt; with &amp;lt;editor role='translator'&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[.='uniform']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@sample[.='complete']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@part[.='N']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@direct[.='unspecified']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@targOrder[.='U']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@from[.='ROOT']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@anchored[.='yes']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@place[.='unspecified']&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='teiHeader' /&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='bibl[not(title)]' /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- handle &amp;lt;join result='bibl'&amp;gt; here --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match='join[@result=&amp;quot;bibl&amp;quot;]'&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:variable name='joint'&amp;gt;&lt;br /&gt;
        &amp;lt;bibl&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:call-template name='chomp-targets-recursively'&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:with-param name='idstr'&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select='@targets' /&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='exsl:node-set($joint)//bibl' /&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='chomp-targets-recursively'&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:param name='idstr' /&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,' ')&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='chomp-targets-recursively'&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,' ')&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='//*[@id=$first]' /&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='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;]]'&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='author'&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select='author' /&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='authors' /&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='title[(@level=&amp;quot;a&amp;quot; or @level=&amp;quot;&amp;quot; or not(@level))]' /&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='editor' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[@level=&amp;quot;m&amp;quot;]' /&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='editor' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[@level=&amp;quot;s&amp;quot;]' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='date|publisher|pubPlace|biblScope'&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='publisher' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='pubPlace' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='edition' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='date' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='biblScope' /&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='note' /&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='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;]]'&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='author'&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select='author' /&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='authors' /&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='title[@level=&amp;quot;m&amp;quot; or @level=&amp;quot;&amp;quot; or not(@level)]' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='date|publisher|pubPlace|biblScope'&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='publisher' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='pubPlace' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='edition' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='date' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='biblScope' /&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='editor' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[@level=&amp;quot;s&amp;quot;]' /&amp;gt;&lt;br /&gt;
        &amp;lt;/series&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select='note' /&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='bibl[title[not(@level) or @level=&amp;quot;a&amp;quot;] and title[@level=&amp;quot;j&amp;quot;]]'&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='author'&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select='author' /&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='authors' /&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='title[not(@level) or @level=&amp;quot;a&amp;quot;]' /&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='title[@level=&amp;quot;j&amp;quot;]' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='date|publisher|pubPlace|biblScope'&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='publisher' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='pubPlace' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='edition' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='date' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='biblScope' /&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='editor' /&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select='note' /&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='bibl[title[not(@level) or @level=&amp;quot;a&amp;quot;] and title[@level=&amp;quot;m&amp;quot;]]'&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='author'&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select='author' /&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='authors' /&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='title[not(@level) or @level=&amp;quot;a&amp;quot;]' /&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='editor' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[@level=&amp;quot;m&amp;quot;]' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='date|publisher|pubPlace|biblScope'&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='publisher' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='pubPlace' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='edition' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='date' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='biblScope' /&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='note' /&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='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)]))]'&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='author'&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select='author' /&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='authors' /&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='title' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='date|publisher|pubPlace|biblScope'&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='publisher' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='pubPlace' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='edition' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='date' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='biblScope' /&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='note' /&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='authors'&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:if test='not(@id)'&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='@id'&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name='ti'&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:value-of select='@id' /&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select='//link'&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='contains(@targets,$ti)'&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:call-template name='recursively-apply-first-of'&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:with-param name='idstr'&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select='@targets' /&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='recursively-apply-first-of'&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:param name='idstr' /&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,' ')&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='recursively-apply-first-of'&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,' ')&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='//author[@id=$first]|//name[@id=$first]' /&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(..)='bibl'] | editor | &lt;br /&gt;
      biblScope | edition | date[name(..)='bibl'] | publisher | pubPlace | &lt;br /&gt;
      note[name(..)='bibl']&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:when test='@corresp'&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='id(@corresp)' /&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()='TEIform')]|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='bibl/series'&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='*/node()' /&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(..)='bibl']/text()|biblScope/text()|date[name(..)='bibl']/text()|edition/text()|pubPlace/text()|publisher/text()|note[name(..)='bibl']/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;
''complete'' &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 'level a or without/blank level'.&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='bibl' /&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 'discussion' 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'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='alt'&amp;gt; with &amp;lt;editor role='translator'&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[.='uniform']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@sample[.='complete']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@part[.='N']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@direct[.='unspecified']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@targOrder[.='U']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@from[.='ROOT']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@anchored[.='yes']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@place[.='unspecified']&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='teiHeader' /&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='bibl[not(title)]' /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- handle &amp;lt;join result='bibl'&amp;gt; here --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match='join[@result=&amp;quot;bibl&amp;quot;]'&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:variable name='joint'&amp;gt;&lt;br /&gt;
        &amp;lt;bibl&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:call-template name='chomp-targets-recursively'&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:with-param name='idstr'&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select='@targets' /&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='exsl:node-set($joint)//bibl' /&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='chomp-targets-recursively'&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:param name='idstr' /&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,' ')&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='chomp-targets-recursively'&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,' ')&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='//*[@id=$first]' /&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='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;]]'&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='author'&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select='author' /&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='authors' /&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='title[(@level=&amp;quot;a&amp;quot; or @level=&amp;quot;&amp;quot; or not(@level))]' /&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='editor' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[@level=&amp;quot;m&amp;quot;]' /&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='editor' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[@level=&amp;quot;s&amp;quot;]' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='date|publisher|pubPlace|biblScope'&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='publisher' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='pubPlace' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='edition' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='date' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='biblScope' /&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='note' /&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='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;]]'&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='author'&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select='author' /&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='authors' /&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='title[@level=&amp;quot;m&amp;quot; or @level=&amp;quot;&amp;quot; or not(@level)]' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='date|publisher|pubPlace|biblScope'&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='publisher' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='pubPlace' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='edition' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='date' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='biblScope' /&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='editor' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[@level=&amp;quot;s&amp;quot;]' /&amp;gt;&lt;br /&gt;
        &amp;lt;/series&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select='note' /&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='bibl[title[not(@level) or @level=&amp;quot;a&amp;quot;] and title[@level=&amp;quot;j&amp;quot;]]'&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='author'&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select='author' /&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='authors' /&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='title[not(@level) or @level=&amp;quot;a&amp;quot;]' /&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='title[@level=&amp;quot;j&amp;quot;]' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='date|publisher|pubPlace|biblScope'&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='publisher' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='pubPlace' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='edition' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='date' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='biblScope' /&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='editor' /&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select='note' /&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='bibl[title[not(@level) or @level=&amp;quot;a&amp;quot;] and title[@level=&amp;quot;m&amp;quot;]]'&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='author'&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select='author' /&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='authors' /&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='title[not(@level) or @level=&amp;quot;a&amp;quot;]' /&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='editor' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[@level=&amp;quot;m&amp;quot;]' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='date|publisher|pubPlace|biblScope'&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='publisher' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='pubPlace' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='edition' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='date' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='biblScope' /&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='note' /&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='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)]))]'&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='author'&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select='author' /&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='authors' /&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='title' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='date|publisher|pubPlace|biblScope'&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='publisher' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='pubPlace' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='edition' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='date' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='biblScope' /&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='note' /&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='authors'&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:if test='not(@id)'&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='@id'&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name='ti'&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:value-of select='@id' /&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select='//link'&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='contains(@targets,$ti)'&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:call-template name='recursively-apply-first-of'&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:with-param name='idstr'&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select='@targets' /&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='recursively-apply-first-of'&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:param name='idstr' /&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,' ')&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='recursively-apply-first-of'&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,' ')&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='//author[@id=$first]|//name[@id=$first]' /&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(..)='bibl'] | editor | &lt;br /&gt;
      biblScope | edition | date[name(..)='bibl'] | publisher | pubPlace | &lt;br /&gt;
      note[name(..)='bibl']&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:when test='@corresp'&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='id(@corresp)' /&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()='TEIform')]|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='bibl/series'&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='*/node()' /&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(..)='bibl']/text()|biblScope/text()|date[name(..)='bibl']/text()|edition/text()|pubPlace/text()|publisher/text()|note[name(..)='bibl']/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;
''complete'' &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 'level a or without/blank level'.&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='bibl' /&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 'discussion' 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'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='alt'&amp;gt; with &amp;lt;editor role='translator'&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[.='uniform']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@sample[.='complete']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@part[.='N']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@direct[.='unspecified']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@targOrder[.='U']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@from[.='ROOT']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@anchored[.='yes']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@place[.='unspecified']&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='teiHeader' /&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='bibl[not(title)]' /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- handle &amp;lt;join result='bibl'&amp;gt; here --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match='join[@result=&amp;quot;bibl&amp;quot;]'&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:variable name='joint'&amp;gt;&lt;br /&gt;
        &amp;lt;bibl&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:call-template name='chomp-targets-recursively'&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:with-param name='idstr'&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select='@targets' /&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='exsl:node-set($joint)//bibl' /&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='chomp-targets-recursively'&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:param name='idstr' /&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,' ')&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='chomp-targets-recursively'&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,' ')&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='//*[@id=$first]' /&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='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;]]'&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='author'&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select='author' /&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='authors' /&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='title[(@level=&amp;quot;a&amp;quot; or @level=&amp;quot;&amp;quot; or not(@level))]' /&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='editor' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[@level=&amp;quot;m&amp;quot;]' /&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='editor' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[@level=&amp;quot;s&amp;quot;]' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='date|publisher|pubPlace|biblScope'&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='publisher' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='pubPlace' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='edition' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='date' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='biblScope' /&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='note' /&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='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;]]'&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='author'&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select='author' /&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='authors' /&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='title[@level=&amp;quot;m&amp;quot; or @level=&amp;quot;&amp;quot; or not(@level)]' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='date|publisher|pubPlace|biblScope'&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='publisher' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='pubPlace' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='edition' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='date' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='biblScope' /&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='editor' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[@level=&amp;quot;s&amp;quot;]' /&amp;gt;&lt;br /&gt;
        &amp;lt;/series&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select='note' /&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='bibl[title[not(@level) or @level=&amp;quot;a&amp;quot;] and title[@level=&amp;quot;j&amp;quot;]]'&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='author'&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select='author' /&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='authors' /&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='title[not(@level) or @level=&amp;quot;a&amp;quot;]' /&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='title[@level=&amp;quot;j&amp;quot;]' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='date|publisher|pubPlace|biblScope'&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='publisher' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='pubPlace' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='edition' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='date' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='biblScope' /&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='editor' /&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select='note' /&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='bibl[title[not(@level) or @level=&amp;quot;a&amp;quot;] and title[@level=&amp;quot;m&amp;quot;]]'&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='author'&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select='author' /&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='authors' /&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='title[not(@level) or @level=&amp;quot;a&amp;quot;]' /&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='editor' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[@level=&amp;quot;m&amp;quot;]' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='date|publisher|pubPlace|biblScope'&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='publisher' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='pubPlace' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='edition' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='date' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='biblScope' /&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='note' /&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='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)]))]'&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='author'&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select='author' /&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='authors' /&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='title' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='date|publisher|pubPlace|biblScope'&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='publisher' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='pubPlace' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='edition' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='date' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='biblScope' /&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='note' /&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='authors'&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:if test='not(@id)'&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='@id'&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name='ti'&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:value-of select='@id' /&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select='//link'&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='contains(@targets,$ti)'&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:call-template name='recursively-apply-first-of'&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:with-param name='idstr'&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select='@targets' /&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='recursively-apply-first-of'&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:param name='idstr' /&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,' ')&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='recursively-apply-first-of'&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,' ')&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='//author[@id=$first]|//name[@id=$first]' /&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(..)='bibl'] | editor | &lt;br /&gt;
      biblScope | edition | date[name(..)='bibl'] | publisher | pubPlace | &lt;br /&gt;
      note[name(..)='bibl']&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:when test='@corresp'&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='id(@corresp)' /&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()='TEIform')]|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='bibl/series'&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='*/node()' /&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(..)='bibl']/text()|biblScope/text()|date[name(..)='bibl']/text()|edition/text()|pubPlace/text()|publisher/text()|note[name(..)='bibl']/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;
''complete'' &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 'level a or without/blank level'.&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='bibl' /&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 'discussion' 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'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='alt'&amp;gt; with &amp;lt;editor role='translator'&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[.='uniform']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@sample[.='complete']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@part[.='N']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@direct[.='unspecified']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@targOrder[.='U']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@from[.='ROOT']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@anchored[.='yes']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@place[.='unspecified']&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='teiHeader' /&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='bibl[not(title)]' /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- handle &amp;lt;join result='bibl'&amp;gt; here --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match='join[@result=&amp;quot;bibl&amp;quot;]'&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:variable name='joint'&amp;gt;&lt;br /&gt;
        &amp;lt;bibl&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:call-template name='chomp-targets-recursively'&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:with-param name='idstr'&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select='@targets' /&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='exsl:node-set($joint)//bibl' /&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='chomp-targets-recursively'&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:param name='idstr' /&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,' ')&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='chomp-targets-recursively'&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,' ')&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='//*[@id=$first]' /&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='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;]]'&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='author'&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select='author' /&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='authors' /&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='title[(@level=&amp;quot;a&amp;quot; or @level=&amp;quot;&amp;quot; or not(@level))]' /&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='editor' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[@level=&amp;quot;m&amp;quot;]' /&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='editor' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[@level=&amp;quot;s&amp;quot;]' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='date|publisher|pubPlace|biblScope'&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='publisher' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='pubPlace' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='edition' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='date' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='biblScope' /&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='note' /&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='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;]]'&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='author'&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select='author' /&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='authors' /&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='title[@level=&amp;quot;m&amp;quot; or @level=&amp;quot;&amp;quot; or not(@level)]' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='date|publisher|pubPlace|biblScope'&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='publisher' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='pubPlace' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='edition' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='date' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='biblScope' /&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='editor' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[@level=&amp;quot;s&amp;quot;]' /&amp;gt;&lt;br /&gt;
        &amp;lt;/series&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select='note' /&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='bibl[title[not(@level) or @level=&amp;quot;a&amp;quot;] and title[@level=&amp;quot;j&amp;quot;]]'&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='author'&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select='author' /&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='authors' /&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='title[not(@level) or @level=&amp;quot;a&amp;quot;]' /&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='title[@level=&amp;quot;j&amp;quot;]' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='date|publisher|pubPlace|biblScope'&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='publisher' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='pubPlace' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='edition' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='date' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='biblScope' /&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='editor' /&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select='note' /&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='bibl[title[not(@level) or @level=&amp;quot;a&amp;quot;] and title[@level=&amp;quot;m&amp;quot;]]'&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='author'&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select='author' /&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='authors' /&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='title[not(@level) or @level=&amp;quot;a&amp;quot;]' /&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='editor' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[@level=&amp;quot;m&amp;quot;]' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='date|publisher|pubPlace|biblScope'&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='publisher' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='pubPlace' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='edition' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='date' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='biblScope' /&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='note' /&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='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)]))]'&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='author'&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select='author' /&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='authors' /&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='title' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='date|publisher|pubPlace|biblScope'&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='publisher' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='pubPlace' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='edition' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='date' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='biblScope' /&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='note' /&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='authors'&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:if test='not(@id)'&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='@id'&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name='ti'&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:value-of select='@id' /&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select='//link'&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='contains(@targets,$ti)'&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:call-template name='recursively-apply-first-of'&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:with-param name='idstr'&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select='@targets' /&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='recursively-apply-first-of'&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:param name='idstr' /&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,' ')&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='recursively-apply-first-of'&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,' ')&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='//author[@id=$first]|//name[@id=$first]' /&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(..)='bibl'] | editor | &lt;br /&gt;
      biblScope | edition | date[name(..)='bibl'] | publisher | pubPlace | &lt;br /&gt;
      note[name(..)='bibl']&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:when test='@corresp'&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='id(@corresp)' /&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()='TEIform')]|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='bibl/series'&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='*/node()' /&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(..)='bibl']/text()|biblScope/text()|date[name(..)='bibl']/text()|edition/text()|pubPlace/text()|publisher/text()|note[name(..)='bibl']/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;
''complete'' &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 'level a or without/blank level'.&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='bibl' /&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 'discussion' 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'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='alt'&amp;gt; with &amp;lt;editor role='translator'&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[.='uniform']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@sample[.='complete']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@part[.='N']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@direct[.='unspecified']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@targOrder[.='U']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@from[.='ROOT']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@anchored[.='yes']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@place[.='unspecified']&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='teiHeader' /&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='bibl[not(title)]' /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- handle &amp;lt;join result='bibl'&amp;gt; here --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match='join[@result=&amp;quot;bibl&amp;quot;]'&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:variable name='joint'&amp;gt;&lt;br /&gt;
        &amp;lt;bibl&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:call-template name='chomp-targets-recursively'&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:with-param name='idstr'&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select='@targets' /&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='exsl:node-set($joint)//bibl' /&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='chomp-targets-recursively'&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:param name='idstr' /&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,' ')&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='chomp-targets-recursively'&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,' ')&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='//*[@id=$first]' /&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='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;]]'&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='author'&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select='author' /&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='authors' /&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='title[(@level=&amp;quot;a&amp;quot; or @level=&amp;quot;&amp;quot; or not(@level))]' /&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='editor' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[@level=&amp;quot;m&amp;quot;]' /&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='editor' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[@level=&amp;quot;s&amp;quot;]' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='date|publisher|pubPlace|biblScope'&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='publisher' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='pubPlace' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='edition' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='date' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='biblScope' /&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='note' /&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='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;]]'&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='author'&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select='author' /&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='authors' /&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='title[@level=&amp;quot;m&amp;quot; or @level=&amp;quot;&amp;quot; or not(@level)]' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='date|publisher|pubPlace|biblScope'&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='publisher' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='pubPlace' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='edition' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='date' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='biblScope' /&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='editor' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[@level=&amp;quot;s&amp;quot;]' /&amp;gt;&lt;br /&gt;
        &amp;lt;/series&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select='note' /&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='bibl[title[not(@level) or @level=&amp;quot;a&amp;quot;] and title[@level=&amp;quot;j&amp;quot;]]'&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='author'&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select='author' /&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='authors' /&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='title[not(@level) or @level=&amp;quot;a&amp;quot;]' /&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='title[@level=&amp;quot;j&amp;quot;]' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='date|publisher|pubPlace|biblScope'&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='publisher' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='pubPlace' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='edition' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='date' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='biblScope' /&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='editor' /&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select='note' /&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='bibl[title[not(@level) or @level=&amp;quot;a&amp;quot;] and title[@level=&amp;quot;m&amp;quot;]]'&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='author'&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select='author' /&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='authors' /&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='title[not(@level) or @level=&amp;quot;a&amp;quot;]' /&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='editor' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[@level=&amp;quot;m&amp;quot;]' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='date|publisher|pubPlace|biblScope'&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='publisher' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='pubPlace' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='edition' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='date' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='biblScope' /&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='note' /&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='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)]))]'&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='author'&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select='author' /&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='authors' /&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='title' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='date|publisher|pubPlace|biblScope'&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='publisher' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='pubPlace' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='edition' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='date' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='biblScope' /&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='note' /&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='authors'&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:if test='not(@id)'&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='@id'&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name='ti'&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:value-of select='@id' /&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select='//link'&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='contains(@targets,$ti)'&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:call-template name='recursively-apply-first-of'&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:with-param name='idstr'&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select='@targets' /&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='recursively-apply-first-of'&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:param name='idstr' /&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,' ')&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='recursively-apply-first-of'&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,' ')&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='//author[@id=$first]|//name[@id=$first]' /&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(..)='bibl'] | editor | &lt;br /&gt;
      biblScope | edition | date[name(..)='bibl'] | publisher | pubPlace | &lt;br /&gt;
      note[name(..)='bibl']&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:when test='@corresp'&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='id(@corresp)' /&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()='TEIform')]|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='bibl/series'&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='*/node()' /&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(..)='bibl']/text()|biblScope/text()|date[name(..)='bibl']/text()|edition/text()|pubPlace/text()|publisher/text()|note[name(..)='bibl']/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;
''complete'' &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 'level a or without/blank level'.&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='bibl' /&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 'discussion' 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'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='alt'&amp;gt; with &amp;lt;editor role='translator'&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[.='uniform']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@sample[.='complete']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@part[.='N']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@direct[.='unspecified']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@targOrder[.='U']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@from[.='ROOT']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@anchored[.='yes']&amp;quot;&amp;gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;@place[.='unspecified']&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='teiHeader' /&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='bibl[not(title)]' /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- handle &amp;lt;join result='bibl'&amp;gt; here --&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match='join[@result=&amp;quot;bibl&amp;quot;]'&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:variable name='joint'&amp;gt;&lt;br /&gt;
        &amp;lt;bibl&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:call-template name='chomp-targets-recursively'&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:with-param name='idstr'&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select='@targets' /&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='exsl:node-set($joint)//bibl' /&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='chomp-targets-recursively'&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:param name='idstr' /&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,' ')&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='chomp-targets-recursively'&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,' ')&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='//*[@id=$first]' /&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='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;]]'&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='author'&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select='author' /&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='authors' /&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='title[(@level=&amp;quot;a&amp;quot; or @level=&amp;quot;&amp;quot; or not(@level))]' /&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='editor' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[@level=&amp;quot;m&amp;quot;]' /&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='editor' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[@level=&amp;quot;s&amp;quot;]' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='date|publisher|pubPlace|biblScope'&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='publisher' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='pubPlace' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='edition' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='date' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='biblScope' /&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='note' /&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='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;]]'&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='author'&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select='author' /&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='authors' /&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='title[@level=&amp;quot;m&amp;quot; or @level=&amp;quot;&amp;quot; or not(@level)]' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='date|publisher|pubPlace|biblScope'&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='publisher' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='pubPlace' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='edition' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='date' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='biblScope' /&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='editor' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[@level=&amp;quot;s&amp;quot;]' /&amp;gt;&lt;br /&gt;
        &amp;lt;/series&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select='note' /&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='bibl[title[not(@level) or @level=&amp;quot;a&amp;quot;] and title[@level=&amp;quot;j&amp;quot;]]'&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='author'&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select='author' /&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='authors' /&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='title[not(@level) or @level=&amp;quot;a&amp;quot;]' /&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='title[@level=&amp;quot;j&amp;quot;]' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='date|publisher|pubPlace|biblScope'&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='publisher' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='pubPlace' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='edition' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='date' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='biblScope' /&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='editor' /&amp;gt;&lt;br /&gt;
        &amp;lt;/monogr&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:apply-templates select='note' /&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='bibl[title[not(@level) or @level=&amp;quot;a&amp;quot;] and title[@level=&amp;quot;m&amp;quot;]]'&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='author'&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select='author' /&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='authors' /&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='title[not(@level) or @level=&amp;quot;a&amp;quot;]' /&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='editor' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='title[@level=&amp;quot;m&amp;quot;]' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='date|publisher|pubPlace|biblScope'&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='publisher' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='pubPlace' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='edition' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='date' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='biblScope' /&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='note' /&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='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)]))]'&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='author'&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:apply-templates select='author' /&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='authors' /&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='title' /&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='date|publisher|pubPlace|biblScope'&amp;gt;&lt;br /&gt;
          &amp;lt;imprint&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='publisher' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='pubPlace' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='edition' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='date' /&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:apply-templates select='biblScope' /&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='note' /&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='authors'&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:if test='not(@id)'&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='@id'&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:variable name='ti'&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:value-of select='@id' /&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select='//link'&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:if test='contains(@targets,$ti)'&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:call-template name='recursively-apply-first-of'&amp;gt;&lt;br /&gt;
              &amp;lt;xsl:with-param name='idstr'&amp;gt;&lt;br /&gt;
                &amp;lt;xsl:value-of select='@targets' /&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='recursively-apply-first-of'&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:param name='idstr' /&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,' ')&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='recursively-apply-first-of'&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,' ')&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='//author[@id=$first]|//name[@id=$first]' /&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(..)='bibl'] | editor | &lt;br /&gt;
      biblScope | edition | date[name(..)='bibl'] | publisher | pubPlace | &lt;br /&gt;
      note[name(..)='bibl']&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:when test='@corresp'&amp;gt;&lt;br /&gt;
          &amp;lt;xsl:apply-templates select='id(@corresp)' /&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()='TEIform')]|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='bibl/series'&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='*/node()' /&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(..)='bibl']/text()|biblScope/text()|date[name(..)='bibl']/text()|edition/text()|pubPlace/text()|publisher/text()|note[name(..)='bibl']/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>