Skip to content
Snippets Groups Projects
Commit 8985e985 authored by Christian Boulanger's avatar Christian Boulanger
Browse files

handle bibl elements outside footnotes

parent 9ceadad4
No related branches found
No related tags found
No related merge requests found
%% Cell type:markdown id:4c77ab592c98dfd tags: %% Cell type:markdown id:4c77ab592c98dfd tags:
# Conversion to TEI (`<bibl>`) # Conversion to TEI (`<bibl>`)
References: References:
- https://vault.tei-c.de/P5/3.0.0/doc/tei-p5-doc/en/html/CO.html#COBI (Overview) - https://vault.tei-c.de/P5/3.0.0/doc/tei-p5-doc/en/html/CO.html#COBI (Overview)
- https://vault.tei-c.de/P5/3.0.0/doc/tei-p5-doc/en/html/CO.html#COBIOT (Mapping to other bibliographic formats) - https://vault.tei-c.de/P5/3.0.0/doc/tei-p5-doc/en/html/CO.html#COBIOT (Mapping to other bibliographic formats)
- https://vault.tei-c.de/P5/3.0.0/doc/tei-p5-doc/en/html/ref-bibl.html (`<bibl>`) - https://vault.tei-c.de/P5/3.0.0/doc/tei-p5-doc/en/html/ref-bibl.html (`<bibl>`)
- https://vault.tei-c.de/P5/3.0.0/doc/tei-p5-doc/en/html/ref-biblStruct.html (`biblStruct`) - https://vault.tei-c.de/P5/3.0.0/doc/tei-p5-doc/en/html/ref-biblStruct.html (`biblStruct`)
- https://epidoc.stoa.org/gl/latest/supp-bibliography.html (Examples) - https://epidoc.stoa.org/gl/latest/supp-bibliography.html (Examples)
- https://quod.lib.umich.edu/cgi/t/tei/tei-idx?type=HTML&rgn=DIV2&byte=647051 - https://quod.lib.umich.edu/cgi/t/tei/tei-idx?type=HTML&rgn=DIV2&byte=647051
- https://grobid.readthedocs.io/en/latest/training/Bibliographical-references/ (Grobid examples using `<bibl>`) - https://grobid.readthedocs.io/en/latest/training/Bibliographical-references/ (Grobid examples using `<bibl>`)
We use `<bibl>` here instead of `<biblStruct>` because it is more loosely-structured and allows for a more flat datastructure. We use `<bibl>` here instead of `<biblStruct>` because it is more loosely-structured and allows for a more flat datastructure.
## Collect metadata on TEI `<bibl>` tags ## Collect metadata on TEI `<bibl>` tags
%% Cell type:code id:ff140f40df428a8f tags: %% Cell type:code id:ff140f40df428a8f tags:
``` python ``` python
import xmlschema import xmlschema
import os import os
# cache for local use # cache for local use
if not os.path.isdir("schema/tei"): if not os.path.isdir("schema/tei"):
schema = xmlschema.XMLSchema("https://www.tei-c.org/release/xml/tei/custom/schema/xsd/tei_all.xsd") schema = xmlschema.XMLSchema("https://www.tei-c.org/release/xml/tei/custom/schema/xsd/tei_all.xsd")
schema.export(target='schema/tei', save_remote=True) schema.export(target='schema/tei', save_remote=True)
``` ```
%% Cell type:code id:572f566fc9784238 tags: %% Cell type:code id:572f566fc9784238 tags:
``` python ``` python
import xml.etree.ElementTree as ET import xml.etree.ElementTree as ET
import pandas as pd import pandas as pd
import requests import requests
from bs4 import BeautifulSoup from bs4 import BeautifulSoup
import re import re
from tqdm.notebook import tqdm from tqdm.notebook import tqdm
# written by GPT-4 # written by GPT-4
def extract_headings_and_links(tag, doc_heading, doc_base_url): def extract_headings_and_links(tag, doc_heading, doc_base_url):
# Extract heading numbers from the document # Extract heading numbers from the document
heading_numbers = re.findall(r'\d+(?:\.\d+)*', doc_heading) heading_numbers = re.findall(r'\d+(?:\.\d+)*', doc_heading)
# Download the HTML page # Download the HTML page
url = f"{doc_base_url}/ref-{tag}.html" url = f"{doc_base_url}/ref-{tag}.html"
response = requests.get(url) response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser') soup = BeautifulSoup(response.content, 'html.parser')
# Extract the links associated with each heading number # Extract the links associated with each heading number
links = {} links = {}
for link in soup.find_all('a', class_='link_ptr'): for link in soup.find_all('a', class_='link_ptr'):
heading_value = link.find('span', class_='headingNumber').text.strip() heading_value = link.find('span', class_='headingNumber').text.strip()
link_url = link.get('href') link_url = link.get('href')
links[heading_value] = f"{doc_base_url}/{link_url}" links[heading_value] = f"{doc_base_url}/{link_url}"
return {heading: link_url for heading, link_url in zip(heading_numbers, links.values()) if return {heading: link_url for heading, link_url in zip(heading_numbers, links.values()) if
heading in heading_numbers} heading in heading_numbers}
def generate_tag_docs(xsd_path): def generate_tag_docs(xsd_path):
namespaces = {'xs': 'http://www.w3.org/2001/XMLSchema'} namespaces = {'xs': 'http://www.w3.org/2001/XMLSchema'}
doc_base_url = "https://vault.tei-c.de/P5/3.0.0/doc/tei-p5-doc/en/html" doc_base_url = "https://vault.tei-c.de/P5/3.0.0/doc/tei-p5-doc/en/html"
tree = ET.parse('schema/tei/tei_all.xsd') tree = ET.parse('schema/tei/tei_all.xsd')
root = tree.getroot() root = tree.getroot()
schema = xmlschema.XMLSchema(xsd_path) schema = xmlschema.XMLSchema(xsd_path)
bibl_schema = schema.find("tei:bibl") bibl_schema = schema.find("tei:bibl")
data_list = [] data_list = []
#names = [child_element.local_name for child_element in bibl_schema.iterchildren()] #names = [child_element.local_name for child_element in bibl_schema.iterchildren()]
names = ['author', 'biblScope', 'citedRange', 'date', 'edition', 'editor', 'idno', 'location', 'note', 'orgName', names = ['author', 'biblScope', 'citedRange', 'date', 'edition', 'editor', 'idno', 'location', 'note', 'orgName',
'publisher', 'pubPlace', 'ptr', 'series', 'span', 'title', 'volume', 'issue'] 'publisher', 'pubPlace', 'ptr', 'series', 'span', 'title', 'volume', 'issue']
for name in tqdm(names, desc="Processing TEI tags"): for name in tqdm(names, desc="Processing TEI tags"):
doc_node = root.find(f".//xs:element[@name='{name}']/xs:annotation/xs:documentation", namespaces=namespaces) doc_node = root.find(f".//xs:element[@name='{name}']/xs:annotation/xs:documentation", namespaces=namespaces)
if doc_node is not None: if doc_node is not None:
matches = re.search(r'^(.*)\[(.*)]$', doc_node.text) matches = re.search(r'^(.*)\[(.*)]$', doc_node.text)
if matches is None: continue if matches is None: continue
description = matches.group(1) description = matches.group(1)
doc_heading = matches.group(2) doc_heading = matches.group(2)
doc_urls = extract_headings_and_links(name, doc_heading, doc_base_url) doc_urls = extract_headings_and_links(name, doc_heading, doc_base_url)
data_list.append({'name': name, 'description': description, 'documentation': doc_heading, 'urls': doc_urls}) data_list.append({'name': name, 'description': description, 'documentation': doc_heading, 'urls': doc_urls})
return pd.DataFrame(data_list) return pd.DataFrame(data_list)
cache_file = "schema/tei/tei-tags-documentation.json" cache_file = "schema/tei/tei-tags-documentation.json"
if not os.path.isfile(cache_file): if not os.path.isfile(cache_file):
df = generate_tag_docs("schema/tei/tei_all.xsd") df = generate_tag_docs("schema/tei/tei_all.xsd")
df.to_json(cache_file, index=False, orient='records') df.to_json(cache_file, index=False, orient='records')
else: else:
df = pd.read_json(cache_file) df = pd.read_json(cache_file)
df df
``` ```
%% Output %% Output
name description \ name description \
0 author (author) in a bibliographic reference, contain... 0 author (author) in a bibliographic reference, contain...
1 biblScope (scope of bibliographic reference) defines the... 1 biblScope (scope of bibliographic reference) defines the...
2 citedRange (cited range) defines the range of cited conte... 2 citedRange (cited range) defines the range of cited conte...
3 date (date) contains a date in any format. 3 date (date) contains a date in any format.
4 edition (edition) describes the particularities of one... 4 edition (edition) describes the particularities of one...
5 editor contains a secondary statement of responsibili... 5 editor contains a secondary statement of responsibili...
6 location (location) defines the location of a place as ... 6 location (location) defines the location of a place as ...
7 note (note) contains a note or annotation. 7 note (note) contains a note or annotation.
8 publisher (publisher) provides the name of the organizat... 8 publisher (publisher) provides the name of the organizat...
9 pubPlace (publication place) contains the name of the p... 9 pubPlace (publication place) contains the name of the p...
10 series (series information) contains information abou... 10 series (series information) contains information abou...
11 span associates an interpretative annotation direct... 11 span associates an interpretative annotation direct...
12 title (title) contains a title for any kind of work. 12 title (title) contains a title for any kind of work.
documentation \ documentation \
0 3.12.2.2. Titles, Authors, and Editors 2.2.1. ... 0 3.12.2.2. Titles, Authors, and Editors 2.2.1. ...
1 3.12.2.5. Scopes and Ranges in Bibliographic C... 1 3.12.2.5. Scopes and Ranges in Bibliographic C...
2 3.12.2.5. Scopes and Ranges in Bibliographic C... 2 3.12.2.5. Scopes and Ranges in Bibliographic C...
3 3.6.4. Dates and Times 2.2.4. Publication, Dis... 3 3.6.4. Dates and Times 2.2.4. Publication, Dis...
4 2.2.2. The Edition Statement 4 2.2.2. The Edition Statement
5 3.12.2.2. Titles, Authors, and Editors 5 3.12.2.2. Titles, Authors, and Editors
6 14.3.4. Places 6 14.3.4. Places
7 3.9.1. Notes and Simple Annotation 2.2.6. The ... 7 3.9.1. Notes and Simple Annotation 2.2.6. The ...
8 3.12.2.4. Imprint, Size of a Document, and Rep... 8 3.12.2.4. Imprint, Size of a Document, and Rep...
9 3.12.2.4. Imprint, Size of a Document, and Rep... 9 3.12.2.4. Imprint, Size of a Document, and Rep...
10 3.12.2.1. Analytic, Monographic, and Series Le... 10 3.12.2.1. Analytic, Monographic, and Series Le...
11 18.3. Spans and Interpretations 11 18.3. Spans and Interpretations
12 3.12.2.2. Titles, Authors, and Editors 2.2.1. ... 12 3.12.2.2. Titles, Authors, and Editors 2.2.1. ...
urls urls
0 {'3.12.2.2': 'https://vault.tei-c.de/P5/3.0.0/... 0 {'3.12.2.2': 'https://vault.tei-c.de/P5/3.0.0/...
1 {'3.12.2.5': 'https://vault.tei-c.de/P5/3.0.0/... 1 {'3.12.2.5': 'https://vault.tei-c.de/P5/3.0.0/...
2 {'3.12.2.5': 'https://vault.tei-c.de/P5/3.0.0/... 2 {'3.12.2.5': 'https://vault.tei-c.de/P5/3.0.0/...
3 {'3.6.4': 'https://vault.tei-c.de/P5/3.0.0/doc... 3 {'3.6.4': 'https://vault.tei-c.de/P5/3.0.0/doc...
4 {'2.2.2': 'https://vault.tei-c.de/P5/3.0.0/doc... 4 {'2.2.2': 'https://vault.tei-c.de/P5/3.0.0/doc...
5 {'3.12.2.2': 'https://vault.tei-c.de/P5/3.0.0/... 5 {'3.12.2.2': 'https://vault.tei-c.de/P5/3.0.0/...
6 {'14.3.4': 'https://vault.tei-c.de/P5/3.0.0/do... 6 {'14.3.4': 'https://vault.tei-c.de/P5/3.0.0/do...
7 {'3.9.1': 'https://vault.tei-c.de/P5/3.0.0/doc... 7 {'3.9.1': 'https://vault.tei-c.de/P5/3.0.0/doc...
8 {'3.12.2.4': 'https://vault.tei-c.de/P5/3.0.0/... 8 {'3.12.2.4': 'https://vault.tei-c.de/P5/3.0.0/...
9 {'3.12.2.4': 'https://vault.tei-c.de/P5/3.0.0/... 9 {'3.12.2.4': 'https://vault.tei-c.de/P5/3.0.0/...
10 {'3.12.2.1': 'https://vault.tei-c.de/P5/3.0.0/... 10 {'3.12.2.1': 'https://vault.tei-c.de/P5/3.0.0/...
11 {'18.3': 'https://vault.tei-c.de/P5/3.0.0/doc/... 11 {'18.3': 'https://vault.tei-c.de/P5/3.0.0/doc/...
12 {'3.12.2.2': 'https://vault.tei-c.de/P5/3.0.0/... 12 {'3.12.2.2': 'https://vault.tei-c.de/P5/3.0.0/...
%% Cell type:markdown id:aaf43ee43bb6d4d tags: %% Cell type:markdown id:aaf43ee43bb6d4d tags:
## Convert Groundd Truth to TEI ## Convert Groundd Truth to TEI
%% Cell type:code id:b3ee84984b88f24a tags: %% Cell type:code id:b3ee84984b88f24a tags:
``` python ``` python
import xml.etree.ElementTree as ET import xml.etree.ElementTree as ET
import regex as re import regex as re
import glob import glob
import os import os
import xml.dom.minidom import xml.dom.minidom
def prettify(elem, indentation=" "): def prettify(elem, indentation=" "):
"""Return a pretty-printed XML string for the Element.""" """Return a pretty-printed XML string for the Element."""
return xml.dom.minidom.parseString(ET.tostring(elem, 'unicode')).toprettyxml(indent=indentation) return xml.dom.minidom.parseString(ET.tostring(elem, 'unicode')).toprettyxml(indent=indentation)
def even_num_brackets(string: str): def even_num_brackets(string: str):
""" """
Simple heuristic to determine if string contains an even number of round and square brackets, Simple heuristic to determine if string contains an even number of round and square brackets,
so that if not, trailing or leading brackets will be removed. so that if not, trailing or leading brackets will be removed.
""" """
return ((string.endswith(")") and string.count(")") == string.count("(")) return ((string.endswith(")") and string.count(")") == string.count("("))
or (string.endswith("]") and string.count("]") == string.count("["))) or (string.endswith("]") and string.count("]") == string.count("[")))
def remove_punctuation(text): def remove_punctuation(text):
"""This removes leading and trailing punctuation using very simple rules for German and English""" """This removes leading and trailing punctuation using very simple rules for German and English"""
start, end = 0, len(text) start, end = 0, len(text)
while start < len(text) and re.match("\p{P}", text[start]) and text[end - 1]: while start < len(text) and re.match("\p{P}", text[start]) and text[end - 1]:
start += 1 start += 1
while end > start and re.match("\p{P}", text[end - 1]) and not even_num_brackets(text[start:end]) and text[end - 1] not in "?!": while end > start and re.match("\p{P}", text[end - 1]) and not even_num_brackets(text[start:end]) and text[end - 1] not in "?!":
end -= 1 end -= 1
return text[start:end].strip() return text[start:end].strip()
def clean_editor(text): def clean_editor(text):
text = re.sub(r'^in(:| )', '', remove_punctuation(text), flags=re.IGNORECASE) text = re.sub(r'^in(:| )', '', remove_punctuation(text), flags=re.IGNORECASE)
text = re.sub(r'\(?(hrsg\. v\.|hg\. v|hrsg\.|ed\.|eds\.)\)?', '', text, flags=re.IGNORECASE) text = re.sub(r'\(?(hrsg\. v\.|hg\. v|hrsg\.|ed\.|eds\.)\)?', '', text, flags=re.IGNORECASE)
return text return text
def clean_container(text): def clean_container(text):
return remove_punctuation(re.sub(r'^(in|aus|from)(:| )', '', text.strip(), flags=re.IGNORECASE)) return remove_punctuation(re.sub(r'^(in|aus|from)(:| )', '', text.strip(), flags=re.IGNORECASE))
def clean_pages(text): def clean_pages(text):
return remove_punctuation(re.sub(r'^(S\.|p\.|pp\.|ff?\.||seqq?\.)', '', text.strip(), flags=re.IGNORECASE)) return remove_punctuation(re.sub(r'^(S\.|p\.|pp\.|ff?\.||seqq?\.)', '', text.strip(), flags=re.IGNORECASE))
def extract_year(text): def extract_year(text):
m = re.search( r'[12][0-9]{3}', text) m = re.search( r'[12][0-9]{3}', text)
return m.group(0) if m else None return m.group(0) if m else None
def find_string(string, container): def find_string(string, container):
start = container.find(string) start = container.find(string)
if start > -1: if start > -1:
end = start + len(string) end = start + len(string)
return start, end return start, end
raise ValueError(f"Could not find '{string}' in '{container}'") raise ValueError(f"Could not find '{string}' in '{container}'")
def add_node(parent, tag, text="", attributes=None, clean_func=None): def add_node(parent, tag, text="", attributes=None, clean_func=None, preserve=False):
cleaned_text = clean_func(text) if clean_func else text """
start, end = find_string(cleaned_text, text) Adds a child node to the parent, optionally adding text and attributes.
prefix, suffix = text[:start], text[end:] If a clean_func is passed, the text is set after applying the function to it.
if prefix !="" and len(parent) > 0: If the `preserve` flag is True, the removed preceding or trailing text is preserved in the xml,
parent[-1].tail = prefix outside of the node content
"""
node = ET.SubElement(parent, tag, (attributes or {})) node = ET.SubElement(parent, tag, (attributes or {}))
node.text = cleaned_text if clean_func:
if suffix != "": cleaned_text = clean_func(text)
node.tail = suffix if preserve:
start, end = find_string(cleaned_text, text)
prefix, suffix = text[:start], text[end:]
if prefix !="" and len(parent) > 0:
parent[-1].tail = prefix
node.text = cleaned_text
if suffix != "":
node.tail = suffix
else:
node.text = text
return node return node
def create_tei_root(): def create_tei_root():
return ET.Element('TEI', { return ET.Element('TEI', {
'xmlns': "http://www.tei-c.org/ns/1.0" 'xmlns': "http://www.tei-c.org/ns/1.0"
}) })
def create_tei_header(tei_root, title): def create_tei_header(tei_root, title):
tei_header = ET.SubElement(tei_root, 'teiHeader') tei_header = add_node(tei_root, 'teiHeader')
file_desc = ET.SubElement(tei_header, 'fileDesc') file_desc = add_node(tei_header, 'fileDesc')
title_stmt = ET.SubElement(file_desc, 'titleStmt') title_stmt = add_node(file_desc, 'titleStmt')
ET.SubElement(title_stmt, 'title').text = title add_node(title_stmt, 'title', title)
publication_stmt = ET.SubElement(file_desc, 'publicationStmt') publication_stmt = add_node(file_desc, 'publicationStmt')
ET.SubElement(publication_stmt, 'publisher').text = "mpilhlt" add_node(publication_stmt, 'publisher', 'mpilhlt')
source_desc = ET.SubElement(file_desc, 'sourceDesc') source_desc = add_node(file_desc, 'sourceDesc')
ET.SubElement(source_desc, 'p').text = title add_node(source_desc, 'p', title)
return tei_header return tei_header
def create_body(text_root): def create_body(text_root):
body = ET.SubElement(text_root, 'body') body = ET.SubElement(text_root, 'body')
ET.SubElement(body, 'p').text = 'The article text is not part of this document' add_node(body, 'p', 'The article text is not part of this document')
return body return body
def anystyle_to_tei(input_xml_path, id): def anystyle_to_tei(input_xml_path, id, preserve=False):
anystyle_root = ET.parse(input_xml_path).getroot() anystyle_root = ET.parse(input_xml_path).getroot()
tei_root = create_tei_root() tei_root = create_tei_root()
create_tei_header(tei_root, title=id) create_tei_header(tei_root, title=id)
text_root = ET.SubElement(tei_root, 'text') text_root = add_node(tei_root, 'text')
create_body(text_root) body = create_body(text_root)
# <listBibl> element for <bibl> elements that are not in footnotes, such as a bibliography
listBibl = add_node(body, 'listBibl')
# iterate over all sequences (=footnotes) and translate into TEI equivalents
for sequence in anystyle_root.findall('sequence'): for sequence in anystyle_root.findall('sequence'):
# if the sequence contains a citation-number, create a new <note> to add <bibl> elements to
if (cn:= sequence.findall('citation-number')): if (cn:= sequence.findall('citation-number')):
attributes = { attributes = {
'n': cn[0].text, 'n': cn[0].text,
'place': 'bottom' 'place': 'bottom'
} }
node = add_node(text_root, 'note', attributes=attributes, clean_func=remove_punctuation) node = add_node(text_root, 'note', attributes=attributes, clean_func=remove_punctuation, preserve=preserve)
else: else:
node = text_root # otherwise add to <listBibl> element
node = listBibl
bibl = None bibl = None
for child in sequence: for child in sequence:
tag = child.tag tag = child.tag
text = child.text text = child.text
if tag == "citation-number": continue if tag == "citation-number": continue # this has already been taken care of
if (bibl is None # if we do not have a bibl element yet if (bibl is None # if we do not have a bibl element yet
or bibl.find(tag) and tag != "note" # or tag already exists in the current element or bibl.find(tag) and tag != "note" # or tag already exists in the current element
or tag in ['signal', 'legal-ref'] # or tag belongs to a specific groups that signal a separate reference or tag in ['signal', 'legal-ref'] # or tag belongs to a specific groups that signal a separate reference
or (tag in ["author", "editor", "authority"] and bibl.find('date'))): # or specific tags follow a date field or (tag in ["author", "editor", "authority"] and bibl.find('date'))): # or specific tags follow a date field
# then create a new bibl element # then create a new bibl element
bibl = ET.SubElement(node, 'bibl') bibl = ET.SubElement(node, 'bibl')
match tag: match tag:
case 'author': case 'author':
add_node(bibl, 'author', text, clean_func=remove_punctuation) add_node(bibl, 'author', text, clean_func=remove_punctuation, preserve=preserve)
case 'backref': case 'backref':
add_node(bibl, 'ref', text, clean_func=remove_punctuation) add_node(bibl, 'ref', text, clean_func=remove_punctuation, preserve=preserve)
case 'container-title': case 'container-title':
add_node(bibl, 'title', text, {'level': 'm'}, clean_func= clean_container) add_node(bibl, 'title', text, {'level': 'm'}, clean_func= clean_container, preserve=preserve)
case 'collection-title': case 'collection-title':
add_node(bibl, 'title', text, {'level': 's'}, clean_func= clean_container) add_node(bibl, 'title', text, {'level': 's'}, clean_func= clean_container, preserve=preserve)
case 'date': case 'date':
add_node(bibl, 'date', text, clean_func= extract_year) add_node(bibl, 'date', text, clean_func= extract_year, preserve=preserve)
case 'editor': case 'editor':
add_node(bibl, 'editor', text, clean_func=clean_editor) add_node(bibl, 'editor', text, clean_func=clean_editor, preserve=preserve)
case 'note': case 'note':
add_node(bibl, 'note', text) add_node(bibl, 'note', text)
case 'journal': case 'journal':
add_node(bibl, 'title', text, {'level': 'j'}, clean_func= clean_container) add_node(bibl, 'title', text, {'level': 'j'}, clean_func= clean_container, preserve=preserve)
case 'legal-ref': case 'legal-ref':
add_node(bibl, 'ref', text, {'type': 'legal'}, clean_func = remove_punctuation) add_node(bibl, 'ref', text, {'type': 'legal'}, clean_func = remove_punctuation, preserve=preserve)
case 'pages': case 'pages':
add_node(bibl, 'biblScope', text, {'unit': 'pp'}, clean_func= clean_pages) add_node(bibl, 'biblScope', text, {'unit': 'pp'}, clean_func= clean_pages, preserve=preserve)
case 'signal': case 'signal':
add_node(bibl, 'note', text, {'type': 'signal'}, clean_func=remove_punctuation) add_node(bibl, 'note', text, {'type': 'signal'}, clean_func=remove_punctuation, preserve=preserve)
case 'title': case 'title':
add_node(bibl, 'title', text, {'level': 'a'}, clean_func=remove_punctuation) add_node(bibl, 'title', text, {'level': 'a'}, clean_func=remove_punctuation, preserve=preserve)
case 'volume': case 'volume':
add_node(bibl, 'biblScope', text, {'unit': 'vol'}, clean_func = remove_punctuation) add_node(bibl, 'biblScope', text, {'unit': 'vol'}, clean_func = remove_punctuation, preserve=preserve)
return prettify(tei_root) return prettify(tei_root)
for input_path in glob.glob('anystyle/*.xml'): for input_path in glob.glob('anystyle/*.xml'):
base_name = os.path.basename(input_path) base_name = os.path.basename(input_path)
id = os.path.splitext(base_name)[0] id = os.path.splitext(base_name)[0]
output_path = f'tei/{id}.xml' output_path = f'tei/{id}.xml'
output_xml = anystyle_to_tei(input_path, id) output_xml = anystyle_to_tei(input_path, id, preserve=True)
print(f'Writing {output_path}') print(f'Writing {output_path}')
with open(output_path, 'w', encoding='utf-8') as output_file: with open(output_path, 'w', encoding='utf-8') as output_file:
output_file.write(output_xml) output_file.write(output_xml)
``` ```
%% Output %% Output
Writing tei/10.1111_1467-6478.00057.xml Writing tei/10.1111_1467-6478.00057.xml
Writing tei/10.1111_1467-6478.00080.xml Writing tei/10.1111_1467-6478.00080.xml
Writing tei/10.1515_zfrs-1980-0103.xml Writing tei/10.1515_zfrs-1980-0103.xml
Writing tei/10.1515_zfrs-1980-0104.xml Writing tei/10.1515_zfrs-1980-0104.xml
%% Cell type:markdown id:b0a231dc7bdd8b01 tags: %% Cell type:markdown id:b0a231dc7bdd8b01 tags:
## Create LinkML schema from TEI XSD ## Create LinkML schema from TEI XSD
%% Cell type:markdown id:aa86435960e61937 tags: %% Cell type:markdown id:aa86435960e61937 tags:
......
...@@ -28,9 +28,9 @@ ...@@ -28,9 +28,9 @@
<location>Freiburg</location> <location>Freiburg</location>
<date>1978.</date> <date>1978.</date>
<signal>Der ausführliche Forschungsbericht von </signal> <signal>Der ausführliche Forschungsbericht von </signal>
<author>Richard Rosellen</author> <author>Richard Rosellen</author>
<note> erscheint in Kürze unter dem Titel</note> <note> erscheint in Kürze unter dem Titel</note>
<title>.Private Verbrechenskontrolle — eine empirische Untersuchung zur Anzeigeerstattung',</title> <title>'Private Verbrechenskontrolle — eine empirische Untersuchung zur Anzeigeerstattung',</title>
<location>Berlin,</location> <location>Berlin,</location>
<date>voraussichtlich 1980.</date> <date>voraussichtlich 1980.</date>
</sequence> </sequence>
...@@ -56,7 +56,7 @@ ...@@ -56,7 +56,7 @@
</sequence> </sequence>
<sequence> <sequence>
<citation-number>7</citation-number> <citation-number>7</citation-number>
<signal>Zum Konzept der .Thematisierung von Recht' vgl.</signal> <signal>Zum Konzept der 'Thematisierung von Recht' vgl.</signal>
<author>Luhmann</author> <author>Luhmann</author>
<date>1980,</date> <date>1980,</date>
<pages>S. 99—112.</pages> <pages>S. 99—112.</pages>
...@@ -133,7 +133,7 @@ ...@@ -133,7 +133,7 @@
<citation-number>18</citation-number> <citation-number>18</citation-number>
<title>Projektbericht ,Rechtshilfebedürfnisse sozial Schwacher*,</title> <title>Projektbericht ,Rechtshilfebedürfnisse sozial Schwacher*,</title>
<author>(Blankenburg/Gorges/Reifner; Ticmann). </author> <author>(Blankenburg/Gorges/Reifner; Ticmann). </author>
<note>Befragt wurden im Januar bis März 1979 je eine Person in 835 Haushalten Westberlins. Veröffentlichung ist vorgesehen für </note> <note>Befragt wurden im Januar bis März 1979 je eine Person in 835 Haushalten Westberlins. Veröffentlichung ist vorgesehen für </note>
<date>Ende 1980. </date> <date>Ende 1980. </date>
<note>Quelle: Eigene Befragung in West-Berlin 1979, Zufallsauswahl aus allen Haushalten mit Deutschen. Mehrfachnennungen, % jeweils bezogen auf Personen, die im jeweiligen Bereich ein Problem nennen.</note> <note>Quelle: Eigene Befragung in West-Berlin 1979, Zufallsauswahl aus allen Haushalten mit Deutschen. Mehrfachnennungen, % jeweils bezogen auf Personen, die im jeweiligen Bereich ein Problem nennen.</note>
</sequence> </sequence>
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<sequence> <sequence>
<ignore>Abgekürzt werden zitiert:</ignore> <ignore>Abgekürzt werden zitiert:</ignore>
<editor>Armer/Grimshaw (Hrsg.),</editor> <editor>Armer/Grimshaw (Hrsg.),</editor>
<title>Comparative Social ResearchMethodological Problems and Strategies</title> <title>Comparative Social Research - Methodological Problems and Strategies</title>
<location>(New York, London, Sydney, Tokio</location> <location>(New York, London, Sydney, Tokio</location>
<date>1973);</date> <date>1973);</date>
<editor>Drobnig/ Rebbinder (Hrsg.),</editor> <editor>Drobnig/ Rebbinder (Hrsg.),</editor>
......
This diff is collapsed.
...@@ -16,18 +16,19 @@ ...@@ -16,18 +16,19 @@
<text> <text>
<body> <body>
<p>The article text is not part of this document</p> <p>The article text is not part of this document</p>
<listBibl/>
</body> </body>
<note n="1" place="bottom"> <note n="1" place="bottom">
<bibl> <bibl>
<note type="signal">For a contrary view, see</note> <note type="signal">For a contrary view, see</note>
<author>G. Jones</author> <author>G. Jones</author>
,
<title level="a">“Traditional” Legal Scholarship: a Personal View</title> <title level="a">“Traditional” Legal Scholarship: a Personal View</title>
in
<title level="m">What Are Law Schools For?</title> <title level="m">What Are Law Schools For?</title>
ed. ,
<editor> P. Birks</editor> <editor> P. Birks</editor>
( ed.
<date>1996</date> <date>1996</date>
) )
<biblScope unit="pp">14</biblScope> <biblScope unit="pp">14</biblScope>
...@@ -37,9 +38,9 @@ ...@@ -37,9 +38,9 @@
<note n="3" place="bottom"> <note n="3" place="bottom">
<bibl> <bibl>
<author>R. Goff</author> <author>R. Goff</author>
,
<title level="a">The Search for Principle</title> <title level="a">The Search for Principle</title>
(
<date>1983</date> <date>1983</date>
) )
<title level="j">Proceeedings of the British Academy</title> <title level="j">Proceeedings of the British Academy</title>
...@@ -51,7 +52,6 @@ ...@@ -51,7 +52,6 @@
<author>A. Dicey</author> <author>A. Dicey</author>
, ,
<title level="a">Can English Law be taught at the Universities?</title> <title level="a">Can English Law be taught at the Universities?</title>
(
<date>1883</date> <date>1883</date>
) )
<biblScope unit="pp">20</biblScope> <biblScope unit="pp">20</biblScope>
...@@ -63,7 +63,6 @@ ...@@ -63,7 +63,6 @@
<author>J. Smith</author> <author>J. Smith</author>
, ,
<title level="a">The Law of Contract</title> <title level="a">The Law of Contract</title>
(
<date>1989</date> <date>1989</date>
) )
</bibl> </bibl>
...@@ -73,9 +72,9 @@ ...@@ -73,9 +72,9 @@
<note type="signal">See, for example</note> <note type="signal">See, for example</note>
, ,
<author>D. Kennedy</author> <author>D. Kennedy</author>
,
<title level="a">Form and substance in Private Law Ajudication</title> <title level="a">Form and substance in Private Law Ajudication</title>
(
<date>1976</date> <date>1976</date>
) )
<biblScope unit="vol">89</biblScope> <biblScope unit="vol">89</biblScope>
...@@ -88,9 +87,9 @@ ...@@ -88,9 +87,9 @@
<note n="7" place="bottom"> <note n="7" place="bottom">
<bibl> <bibl>
<author>B. Hepple</author> <author>B. Hepple</author>
,
<title level="a">The Renewal of the Liberal Law Degree</title> <title level="a">The Renewal of the Liberal Law Degree</title>
(
<date>1996</date> <date>1996</date>
) )
<title level="j">Cambridge Law J</title> <title level="j">Cambridge Law J</title>
...@@ -102,13 +101,13 @@ ...@@ -102,13 +101,13 @@
<note n="8" place="bottom"> <note n="8" place="bottom">
<bibl> <bibl>
<author>P.A. Thomas</author> <author>P.A. Thomas</author>
,
<title level="a">Introduction</title> <title level="a">Introduction</title>
in
<title level="m">Socio-Legal Studies</title> <title level="m">Socio-Legal Studies</title>
ed. ,
<editor> P.A. Thomas</editor> <editor> P.A. Thomas</editor>
( ed.
<date>1997</date> <date>1997</date>
) )
<biblScope unit="pp">19</biblScope> <biblScope unit="pp">19</biblScope>
...@@ -120,7 +119,6 @@ ...@@ -120,7 +119,6 @@
<author>R. Cotterrell</author> <author>R. Cotterrell</author>
, ,
<title level="a">Law’s Community</title> <title level="a">Law’s Community</title>
(
<date>1995</date> <date>1995</date>
) )
<biblScope unit="pp">296</biblScope> <biblScope unit="pp">296</biblScope>
...@@ -130,9 +128,8 @@ ...@@ -130,9 +128,8 @@
<note n="10" place="bottom"> <note n="10" place="bottom">
<bibl> <bibl>
<note>Socio-legal studies has been defined in many different ways. In this essay the term is taken to indicate the use of ideas ‘from other disciplines primarily but not exclusively from within the social science and humanities fields’.</note> <note>Socio-legal studies has been defined in many different ways. In this essay the term is taken to indicate the use of ideas ‘from other disciplines primarily but not exclusively from within the social science and humanities fields’.</note>
<title level="a">Company Law</title> <title level="a">Company Law</title>
in
<editor>Thomas</editor> <editor>Thomas</editor>
, ,
<ref>op. cit., n. 8</ref> <ref>op. cit., n. 8</ref>
...@@ -146,15 +143,12 @@ ...@@ -146,15 +143,12 @@
<note>Some fail wholly. It is difficult to see any effect on academic legal education that resulted from</note> <note>Some fail wholly. It is difficult to see any effect on academic legal education that resulted from</note>
<author>Lady Marre’s</author> <author>Lady Marre’s</author>
<title level="a">report A Time for Change</title> <title level="a">report A Time for Change</title>
(
<date>1988</date> <date>1988</date>
). ).
<note>The Jarratt report on universities produced for the Committee of Vice-Chancellors and Principals (CVCP), Report of the Steering Committee for Efficiency studies in Universities</note> <note>The Jarratt report on universities produced for the Committee of Vice-Chancellors and Principals (CVCP), Report of the Steering Committee for Efficiency studies in Universities</note>
(
<date>1988</date> <date>1988</date>
), ),
<note>produced much comment but little action. Even those that are thought of as being a success are not wholly implemented. Despite Ormrod’s recommendations no Institute of Profesional Legal Studies was set up and the universities and colleges of higher education did not take sole responsibility for vocational legal training</note> <note>produced much comment but little action. Even those that are thought of as being a success are not wholly implemented. Despite Ormrod’s recommendations no Institute of Profesional Legal Studies was set up and the universities and colleges of higher education did not take sole responsibility for vocational legal training</note>
(
<title level="a">Report of the Committee on Legal Education</title> <title level="a">Report of the Committee on Legal Education</title>
( (
<date>1971</date> <date>1971</date>
...@@ -167,7 +161,6 @@ ...@@ -167,7 +161,6 @@
). ).
<note>There were also other recommendations that were not implemented.</note> <note>There were also other recommendations that were not implemented.</note>
<title level="a">The Robbins report on higher education, Higher Education</title> <title level="a">The Robbins report on higher education, Higher Education</title>
(
<date>1963</date> <date>1963</date>
; ;
</bibl> </bibl>
...@@ -175,7 +168,6 @@ ...@@ -175,7 +168,6 @@
<ref type="legal">Cmnd. 2154</ref> <ref type="legal">Cmnd. 2154</ref>
) )
<note>took it is axiomatic that ‘courses of higher education should be available for all those who are qualified by ability and attainment to pursue them and wish to do so’</note> <note>took it is axiomatic that ‘courses of higher education should be available for all those who are qualified by ability and attainment to pursue them and wish to do so’</note>
(
<biblScope unit="pp">para. 31</biblScope> <biblScope unit="pp">para. 31</biblScope>
). ).
<note>This has yet to happen.</note> <note>This has yet to happen.</note>
...@@ -186,14 +178,12 @@ ...@@ -186,14 +178,12 @@
<author>National Committee of Inquiry into Higher Education</author> <author>National Committee of Inquiry into Higher Education</author>
, ,
<title level="a">Higher Education in the learning society</title> <title level="a">Higher Education in the learning society</title>
(
<date>1997</date> <date>1997</date>
) )
<note>(the Dearing report);</note> <note>(the Dearing report);</note>
<author>ACLEC</author> <author>ACLEC</author>
, ,
<title level="a">First Report on Legal Education and Training</title> <title level="a">First Report on Legal Education and Training</title>
(
<date>1996</date> <date>1996</date>
). ).
<note>The Government’s White Paper on further and higher education had not been published at the time of writing this essay.</note> <note>The Government’s White Paper on further and higher education had not been published at the time of writing this essay.</note>
...@@ -211,10 +201,11 @@ ...@@ -211,10 +201,11 @@
</bibl> </bibl>
<bibl> <bibl>
<note type="signal">See</note> <note type="signal">See</note>
(
<author>A. Bradney and F. Cownie</author> <author>A. Bradney and F. Cownie</author>
,
<title level="a">Working on the Chain Gang?</title> <title level="a">Working on the Chain Gang?</title>
(
<date>1996</date> <date>1996</date>
) )
<biblScope unit="vol">2</biblScope> <biblScope unit="vol">2</biblScope>
...@@ -226,9 +217,9 @@ ...@@ -226,9 +217,9 @@
<note n="15" place="bottom"> <note n="15" place="bottom">
<bibl> <bibl>
<author>J. MacFarlane, M. Jeeves, and A. Boon</author> <author>J. MacFarlane, M. Jeeves, and A. Boon</author>
,
<title level="a">Education for Life or for Work?</title> <title level="a">Education for Life or for Work?</title>
(
<date>1987</date> <date>1987</date>
) )
<biblScope unit="vol">137</biblScope> <biblScope unit="vol">137</biblScope>
...@@ -241,13 +232,12 @@ ...@@ -241,13 +232,12 @@
<note n="16" place="bottom"> <note n="16" place="bottom">
<bibl> <bibl>
<author>T.H. Huxley</author> <author>T.H. Huxley</author>
,
<title level="a">Universities: Actual and Ideal</title> <title level="a">Universities: Actual and Ideal</title>
in
<title level="m">T.H. Huxley, Collected Essays</title> <title level="m">T.H. Huxley, Collected Essays</title>
: :
<biblScope unit="vol">Volume III</biblScope> <biblScope unit="vol">Volume III</biblScope>
(
<date>1905</date> <date>1905</date>
) )
<biblScope unit="pp">215</biblScope> <biblScope unit="pp">215</biblScope>
...@@ -257,14 +247,15 @@ ...@@ -257,14 +247,15 @@
<note n="17" place="bottom"> <note n="17" place="bottom">
<bibl> <bibl>
<author>J.S. Mill</author> <author>J.S. Mill</author>
,
<title level="a">Inaugural address to the University of St Andrews</title> <title level="a">Inaugural address to the University of St Andrews</title>
in
<title level="m">Collected Work of John Stuart Mill: Volume</title> <title level="m">Collected Work of John Stuart Mill: Volume</title>
in
<biblScope unit="vol">XXI</biblScope> <biblScope unit="vol">XXI</biblScope>
ed. ,
<editor> J.M. Robson</editor> <editor> J.M. Robson</editor>
( ed.
<date>1984</date> <date>1984</date>
) )
<biblScope unit="pp">218</biblScope> <biblScope unit="pp">218</biblScope>
...@@ -294,7 +285,6 @@ ...@@ -294,7 +285,6 @@
<author>F.R. Leavis</author> <author>F.R. Leavis</author>
, ,
<title level="a">Education and the University</title> <title level="a">Education and the University</title>
(
<date>1948</date> <date>1948</date>
) )
<biblScope unit="vol">28</biblScope> <biblScope unit="vol">28</biblScope>
...@@ -307,9 +297,9 @@ ...@@ -307,9 +297,9 @@
<note type="signal">See, further</note> <note type="signal">See, further</note>
, ,
<author>A. Bradney</author> <author>A. Bradney</author>
,
<title level="a">Liberalising Legal Education</title> <title level="a">Liberalising Legal Education</title>
in
<title level="m">The Law School: Global Issues, Local Questions</title> <title level="m">The Law School: Global Issues, Local Questions</title>
, ,
<note>ed. F. Cownie (forthcoming).</note> <note>ed. F. Cownie (forthcoming).</note>
...@@ -322,10 +312,10 @@ ...@@ -322,10 +312,10 @@
<title level="a">Of Blackstone’s Tower: Metephors of Distance and Histories of the English Law School</title> <title level="a">Of Blackstone’s Tower: Metephors of Distance and Histories of the English Law School</title>
<ref>in Birks, op. cit., n. 1</ref> <ref>in Birks, op. cit., n. 1</ref>
p. ,
<biblScope unit="pp">59. 23</biblScope> <biblScope unit="pp">59. 23</biblScope>
p.
<title level="j">S. Turow, One L</title> <title level="j">S. Turow, One L</title>
(
<date>1977</date> <date>1977</date>
) )
<biblScope unit="pp">106</biblScope> <biblScope unit="pp">106</biblScope>
...@@ -335,9 +325,9 @@ ...@@ -335,9 +325,9 @@
<note n="24" place="bottom"> <note n="24" place="bottom">
<bibl> <bibl>
<author>O. Kahn-Freund</author> <author>O. Kahn-Freund</author>
,
<title level="a">Reflections on Legal Education</title> <title level="a">Reflections on Legal Education</title>
(
<date>1966</date> <date>1966</date>
) )
<biblScope unit="vol">29</biblScope> <biblScope unit="vol">29</biblScope>
...@@ -350,7 +340,6 @@ ...@@ -350,7 +340,6 @@
<note n="25" place="bottom"> <note n="25" place="bottom">
<bibl> <bibl>
<note>Kahn-Freund believed ... legal argument</note> <note>Kahn-Freund believed ... legal argument</note>
(
<author>Kahn-Freund</author> <author>Kahn-Freund</author>
, ,
<ref>id</ref> <ref>id</ref>
...@@ -362,7 +351,7 @@ ...@@ -362,7 +351,7 @@
<author>Leavis</author> <author>Leavis</author>
, ,
<ref>op. cit., n. 20</ref> <ref>op. cit., n. 20</ref>
p. ,
<biblScope unit="pp">120</biblScope> <biblScope unit="pp">120</biblScope>
. .
</bibl> </bibl>
...@@ -377,7 +366,6 @@ ...@@ -377,7 +366,6 @@
<author>M. King</author> <author>M. King</author>
, ,
<title level="a">The New English Literatures</title> <title level="a">The New English Literatures</title>
(
<date>1980</date> <date>1980</date>
) )
<biblScope unit="pp">at 216–17</biblScope> <biblScope unit="pp">at 216–17</biblScope>
...@@ -388,7 +376,7 @@ ...@@ -388,7 +376,7 @@
<note n="30" place="bottom"> <note n="30" place="bottom">
<bibl> <bibl>
<title level="a">Jurisprudence by Sir John Salmond</title> <title level="a">Jurisprudence by Sir John Salmond</title>
ed. ,
<editor> G. Willliams (10th ed</editor> <editor> G. Willliams (10th ed</editor>
., .,
<date>1947</date> <date>1947</date>
...@@ -406,7 +394,6 @@ ...@@ -406,7 +394,6 @@
, ,
<author>E. Durkheim</author> <author>E. Durkheim</author>
<title level="a">The Division of Labour in Society</title> <title level="a">The Division of Labour in Society</title>
(
<date>1933</date> <date>1933</date>
) )
<biblScope unit="pp">68</biblScope> <biblScope unit="pp">68</biblScope>
...@@ -418,16 +405,14 @@ ...@@ -418,16 +405,14 @@
<author>M. Le Brun and R. Johnstone</author> <author>M. Le Brun and R. Johnstone</author>
, ,
<title level="a">The Quiet Revolution: Improving Student Learning in Law</title> <title level="a">The Quiet Revolution: Improving Student Learning in Law</title>
(
<date>1994</date> <date>1994</date>
) )
<note>65. On the effect on women students,</note> <note>65. On the effect on women students,</note>
</bibl> </bibl>
<bibl> <bibl>
<note type="signal">see</note> <note type="signal">see</note>
<title level="a">Define and Empower: Women Students Consider Feminist Learning</title> <title level="a">Define and Empower: Women Students Consider Feminist Learning</title>
(
<date>1990</date> <date>1990</date>
) )
<biblScope unit="vol">I</biblScope> <biblScope unit="vol">I</biblScope>
...@@ -438,9 +423,9 @@ ...@@ -438,9 +423,9 @@
<bibl> <bibl>
<note type="signal">For a survey of CLS and feminist literature on this general point, see</note> <note type="signal">For a survey of CLS and feminist literature on this general point, see</note>
<author>W. Conklin</author> <author>W. Conklin</author>
,
<title level="a">The Invisible Author of Legal Authority</title> <title level="a">The Invisible Author of Legal Authority</title>
(
<date>1996</date> <date>1996</date>
) )
<biblScope unit="vol">VII</biblScope> <biblScope unit="vol">VII</biblScope>
...@@ -452,9 +437,9 @@ ...@@ -452,9 +437,9 @@
<note n="33" place="bottom"> <note n="33" place="bottom">
<bibl> <bibl>
<author>R. Collier</author> <author>R. Collier</author>
,
<title level="a">Masculinism, Law and Law Teaching</title> <title level="a">Masculinism, Law and Law Teaching</title>
(
<date>1991</date> <date>1991</date>
) )
<biblScope unit="vol">19</biblScope> <biblScope unit="vol">19</biblScope>
...@@ -466,9 +451,9 @@ ...@@ -466,9 +451,9 @@
<note n="34" place="bottom"> <note n="34" place="bottom">
<bibl> <bibl>
<author>P. McAuslan</author> <author>P. McAuslan</author>
,
<title level="a">Administrative Law, Collective Consumption and Judicial Policy</title> <title level="a">Administrative Law, Collective Consumption and Judicial Policy</title>
(
<date>1983</date> <date>1983</date>
) )
<biblScope unit="vol">46</biblScope> <biblScope unit="vol">46</biblScope>
...@@ -483,7 +468,7 @@ ...@@ -483,7 +468,7 @@
<author>Le Brun and Johnstone</author> <author>Le Brun and Johnstone</author>
, ,
<ref>op. cit, n. 32</ref> <ref>op. cit, n. 32</ref>
pp. ,
<biblScope unit="pp">71–5</biblScope> <biblScope unit="pp">71–5</biblScope>
. .
</bibl> </bibl>
...@@ -499,9 +484,9 @@ ...@@ -499,9 +484,9 @@
<note n="39" place="bottom"> <note n="39" place="bottom">
<bibl> <bibl>
<author>P. Samuelson</author> <author>P. Samuelson</author>
,
<title level="a">The Convergence of the Law School and the University</title> <title level="a">The Convergence of the Law School and the University</title>
(
<date>1975</date> <date>1975</date>
) )
<biblScope unit="vol">44</biblScope> <biblScope unit="vol">44</biblScope>
...@@ -513,9 +498,8 @@ ...@@ -513,9 +498,8 @@
<note n="40" place="bottom"> <note n="40" place="bottom">
<bibl> <bibl>
<author>P. Harris and M. Jones</author> <author>P. Harris and M. Jones</author>
<title level="a">A Survey of Law Schools in the United Kingdom, 1996</title> <title level="a">A Survey of Law Schools in the United Kingdom, 1996</title>
(
<date>1997</date> <date>1997</date>
) )
<biblScope unit="vol">31</biblScope> <biblScope unit="vol">31</biblScope>
...@@ -527,9 +511,9 @@ ...@@ -527,9 +511,9 @@
<note n="41" place="bottom"> <note n="41" place="bottom">
<bibl> <bibl>
<author>J. Wilson</author> <author>J. Wilson</author>
,
<title level="a">A third survey of university legal education</title> <title level="a">A third survey of university legal education</title>
(
<date>1993</date> <date>1993</date>
) )
<biblScope unit="vol">13</biblScope> <biblScope unit="vol">13</biblScope>
...@@ -544,6 +528,7 @@ ...@@ -544,6 +528,7 @@
</bibl> </bibl>
<bibl> <bibl>
<note type="signal">Harris and</note> <note type="signal">Harris and</note>
(
<author>Jones</author> <author>Jones</author>
, ,
<ref>op. cit., n. 40</ref> <ref>op. cit., n. 40</ref>
...@@ -557,7 +542,6 @@ ...@@ -557,7 +542,6 @@
<author>P. Leighton, T. Mortimer, and N. Whatley</author> <author>P. Leighton, T. Mortimer, and N. Whatley</author>
, ,
<title level="a">Law Teachers: Lawyers or Academics?</title> <title level="a">Law Teachers: Lawyers or Academics?</title>
(
<date>1995</date> <date>1995</date>
) )
</bibl> </bibl>
...@@ -573,9 +557,9 @@ ...@@ -573,9 +557,9 @@
<note n="45" place="bottom"> <note n="45" place="bottom">
<bibl> <bibl>
<author>L. Skwarok</author> <author>L. Skwarok</author>
,
<title level="a">Business Law for Non-Lawyers: Setting the Stage for Teaching, Learning and Assessment at Hong Kong Polytechnic University</title> <title level="a">Business Law for Non-Lawyers: Setting the Stage for Teaching, Learning and Assessment at Hong Kong Polytechnic University</title>
(
<date>1995</date> <date>1995</date>
) )
<biblScope unit="vol">29</biblScope> <biblScope unit="vol">29</biblScope>
...@@ -587,9 +571,9 @@ ...@@ -587,9 +571,9 @@
<note n="46" place="bottom"> <note n="46" place="bottom">
<bibl> <bibl>
<author>N. Bastin</author> <author>N. Bastin</author>
,
<title level="a">Law, Law Staff and CNAA Business Studies Degree Courses</title> <title level="a">Law, Law Staff and CNAA Business Studies Degree Courses</title>
(
<date>1985</date> <date>1985</date>
) )
<biblScope unit="vol">19</biblScope> <biblScope unit="vol">19</biblScope>
...@@ -601,9 +585,9 @@ ...@@ -601,9 +585,9 @@
<note n="47" place="bottom"> <note n="47" place="bottom">
<bibl> <bibl>
<author>A. Ridley</author> <author>A. Ridley</author>
,
<title level="a">Legal Skills for Non-Law Students: Added Value or Irrelevant Diversion?</title> <title level="a">Legal Skills for Non-Law Students: Added Value or Irrelevant Diversion?</title>
(
<date>1994</date> <date>1994</date>
) )
<biblScope unit="vol">28</biblScope> <biblScope unit="vol">28</biblScope>
...@@ -615,9 +599,9 @@ ...@@ -615,9 +599,9 @@
<note n="48" place="bottom"> <note n="48" place="bottom">
<bibl> <bibl>
<author>G. Cartan and T. Vilkinas</author> <author>G. Cartan and T. Vilkinas</author>
,
<title level="a">Legal Literacy for Managers: The Role of the Educator</title> <title level="a">Legal Literacy for Managers: The Role of the Educator</title>
(
<date>1990</date> <date>1990</date>
) )
<biblScope unit="vol">24</biblScope> <biblScope unit="vol">24</biblScope>
...@@ -644,13 +628,13 @@ ...@@ -644,13 +628,13 @@
<note n="51" place="bottom"> <note n="51" place="bottom">
<bibl> <bibl>
<author>P. Birks</author> <author>P. Birks</author>
,
<title level="a">Short Cuts</title> <title level="a">Short Cuts</title>
in
<title level="m">Pressing Problems in the Law</title> <title level="m">Pressing Problems in the Law</title>
ed. ,
<editor> P. Birks</editor> <editor> P. Birks</editor>
( ed.
<date>1994</date> <date>1994</date>
) )
<biblScope unit="pp">10–24</biblScope> <biblScope unit="pp">10–24</biblScope>
...@@ -662,7 +646,7 @@ ...@@ -662,7 +646,7 @@
<author>Ridley</author> <author>Ridley</author>
, ,
<ref>op. cit., n. 47</ref> <ref>op. cit., n. 47</ref>
p. ,
<biblScope unit="pp">283</biblScope> <biblScope unit="pp">283</biblScope>
. .
</bibl> </bibl>
...@@ -672,7 +656,7 @@ ...@@ -672,7 +656,7 @@
<author>Cartan and Vilkinas</author> <author>Cartan and Vilkinas</author>
, ,
<ref>op. cit., n. 48</ref> <ref>op. cit., n. 48</ref>
p. ,
<biblScope unit="pp">248</biblScope> <biblScope unit="pp">248</biblScope>
. .
</bibl> </bibl>
...@@ -680,9 +664,9 @@ ...@@ -680,9 +664,9 @@
<note n="54" place="bottom"> <note n="54" place="bottom">
<bibl> <bibl>
<author>P. Harris</author> <author>P. Harris</author>
,
<title level="a">Curriculum Development in Legal Studies</title> <title level="a">Curriculum Development in Legal Studies</title>
(
<date>1986</date> <date>1986</date>
) )
<biblScope unit="vol">20</biblScope> <biblScope unit="vol">20</biblScope>
...@@ -706,7 +690,6 @@ ...@@ -706,7 +690,6 @@
<author>G. Steiner</author> <author>G. Steiner</author>
, ,
<title level="a">Errata: An Examined Life</title> <title level="a">Errata: An Examined Life</title>
(
<date>1997</date> <date>1997</date>
) )
<biblScope unit="pp">20</biblScope> <biblScope unit="pp">20</biblScope>
......
This diff is collapsed.
This diff is collapsed.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment