|
<?xml version="1.0" encoding="utf-8"?> |
|
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" |
|
xmlns:msxsl="urn:schemas-microsoft-com:xslt" |
|
xmlns:b="http://schemas.openxmlformats.org/officeDocument/2006/bibliography" |
|
xmlns:t="http://www.microsoft.com/temp"> |
|
<xsl:output method="html" encoding="utf-8" /> |
|
|
|
<!-- ================================================================= --> |
|
<!-- メイン処理 --> |
|
<!-- ================================================================= --> |
|
<xsl:template match="/"> |
|
<xsl:choose> |
|
<!-- スタイル名表示 --> |
|
<xsl:when test="b:StyleNameLocalized"> |
|
<xsl:text>ACS</xsl:text> |
|
</xsl:when> |
|
<xsl:when test="b:Version"> |
|
<xsl:text>2006</xsl:text> |
|
</xsl:when> |
|
<xsl:when test="b:OfficeStyleKey"> |
|
<xsl:text>AmChemSoc</xsl:text> |
|
</xsl:when> |
|
|
|
<!-- 重要フィールドの定義 --> |
|
<xsl:when test="b:GetImportantFields"> |
|
<b:ImportantFields> |
|
<b:ImportantField> |
|
<xsl:text>b:Author/b:Author/b:NameList</xsl:text> |
|
</b:ImportantField> |
|
<b:ImportantField> |
|
<xsl:text>b:Title</xsl:text> |
|
</b:ImportantField> |
|
<b:ImportantField> |
|
<xsl:text>b:JournalName</xsl:text> |
|
</b:ImportantField> |
|
<b:ImportantField> |
|
<xsl:text>b:Year</xsl:text> |
|
</b:ImportantField> |
|
<b:ImportantField> |
|
<xsl:text>b:City</xsl:text> |
|
</b:ImportantField> |
|
<b:ImportantField> |
|
<xsl:text>b:Publisher</xsl:text> |
|
</b:ImportantField> |
|
<b:ImportantField> |
|
<xsl:text>b:Volume</xsl:text> |
|
</b:ImportantField> |
|
<b:ImportantField> |
|
<xsl:text>b:Pages</xsl:text> |
|
</b:ImportantField> |
|
</b:ImportantFields> |
|
</xsl:when> |
|
|
|
<!-- 文中引用(すべて上付き文字) --> |
|
<xsl:when test="b:Citation"> |
|
<xsl:call-template name="Citation" /> |
|
</xsl:when> |
|
|
|
<!-- 参考文献リスト --> |
|
<xsl:when test="b:Bibliography"> |
|
<xsl:call-template name="Bibliography" /> |
|
</xsl:when> |
|
</xsl:choose> |
|
</xsl:template> |
|
|
|
<!-- ================================================================= --> |
|
<!-- 文中引用テンプレート --> |
|
<!-- ================================================================= --> |
|
<xsl:template name="Citation"> |
|
<html xmlns="http://www.w3.org/TR/REC-html40"> |
|
<body> |
|
<!-- supタグで囲み上付き文字にする --> |
|
<sup> |
|
<xsl:for-each select="b:Citation"> |
|
<xsl:if test="position() > 1"> |
|
<xsl:text>,</xsl:text> |
|
</xsl:if> |
|
<xsl:value-of |
|
select="b:Source/b:RefOrder" /> |
|
</xsl:for-each> |
|
</sup> |
|
</body> |
|
</html> |
|
</xsl:template> |
|
|
|
<!-- ================================================================= --> |
|
<!-- 参考文献リストテンプレート --> |
|
<!-- ================================================================= --> |
|
<xsl:template name="Bibliography"> |
|
<html xmlns="http://www.w3.org/TR/REC-html40"> |
|
<body> |
|
<table width="100%" class="MsoBibliography"> |
|
<xsl:for-each select="b:Bibliography/b:Source"> |
|
<xsl:sort select="b:RefOrder" data-type="number" /> |
|
<tr> |
|
<!-- 番号 --> |
|
<td width="5%" valign="top"> |
|
<p> |
|
<xsl:value-of select="b:RefOrder" /> |
|
<xsl:text>.</xsl:text> |
|
</p> |
|
</td> |
|
<!-- 文献情報 --> |
|
<td width="95%" valign="top"> |
|
<p> |
|
<xsl:call-template name="Entry" /> |
|
</p> |
|
</td> |
|
</tr> |
|
</xsl:for-each> |
|
</table> |
|
</body> |
|
</html> |
|
</xsl:template> |
|
|
|
<!-- ================================================================= --> |
|
<!-- 各文書タイプの表示形式 --> |
|
<!-- ================================================================= --> |
|
<xsl:template name="Entry"> |
|
|
|
<!-- 著者リスト (共通) --> |
|
<xsl:call-template name="ACS_AuthorList" /> |
|
|
|
<xsl:choose> |
|
|
|
<!-- 1. 雑誌論文 (Journal Article, Periodical) --> |
|
<!-- 書式: Title. J. Name Year(Bold), Vol(Italic), Pages. --> |
|
<xsl:when test="b:SourceType='JournalArticle' or b:SourceType='ArticleInAPeriodical'"> |
|
<xsl:call-template name="Title_Plain" /> |
|
<xsl:if test="b:JournalName"> |
|
<i> |
|
<xsl:value-of select="b:JournalName" /> |
|
</i> |
|
<xsl:text> </xsl:text> |
|
</xsl:if> |
|
<xsl:if |
|
test="not(b:JournalName) and b:PeriodicalTitle"> |
|
<i> |
|
<xsl:value-of select="b:PeriodicalTitle" /> |
|
</i> |
|
<xsl:text> </xsl:text> |
|
</xsl:if> |
|
|
|
<xsl:if |
|
test="b:Year"> |
|
<b> |
|
<xsl:value-of select="b:Year" /> |
|
</b> |
|
</xsl:if> |
|
|
|
<xsl:if |
|
test="b:Volume"> |
|
<xsl:text>, </xsl:text> |
|
<i> |
|
<xsl:value-of select="b:Volume" /> |
|
</i> |
|
</xsl:if> |
|
|
|
<xsl:if |
|
test="b:Pages"> |
|
<xsl:text>, </xsl:text> |
|
<xsl:value-of select="b:Pages" /> |
|
</xsl:if> |
|
<xsl:text>.</xsl:text> |
|
</xsl:when> |
|
|
|
<!-- 2. 書籍 (Book) --> |
|
<!-- 書式: Title(Italic); Publisher: City, Year. --> |
|
<xsl:when test="b:SourceType='Book'"> |
|
<xsl:call-template name="Title_Italic_Semicolon" /> |
|
<xsl:call-template |
|
name="Publisher_City_Year" /> |
|
</xsl:when> |
|
|
|
<!-- 3. 書籍の章 / 会議録 (BookSection, ConferenceProceedings) --> |
|
<!-- 書式: Title. In Book Title(Italic); Editors, Eds.; Publisher: City, Year; pp Pages. --> |
|
<xsl:when test="b:SourceType='BookSection' or b:SourceType='ConferenceProceedings'"> |
|
<xsl:call-template name="Title_Plain" /> |
|
|
|
<xsl:text>In </xsl:text> |
|
<xsl:choose> |
|
<xsl:when test="b:BookTitle"> |
|
<i> |
|
<xsl:value-of select="b:BookTitle" /> |
|
</i> |
|
</xsl:when> |
|
<xsl:when test="b:ConferenceName"> |
|
<i> |
|
<xsl:value-of select="b:ConferenceName" /> |
|
</i> |
|
</xsl:when> |
|
</xsl:choose> |
|
<xsl:text>; </xsl:text> |
|
|
|
<!-- 編集者 --> |
|
<xsl:call-template |
|
name="ACS_EditorList" /> |
|
|
|
<xsl:if test="b:Publisher"> |
|
<xsl:value-of select="b:Publisher" /> |
|
<xsl:text>: </xsl:text> |
|
</xsl:if> |
|
<xsl:if |
|
test="b:City"> |
|
<xsl:value-of select="b:City" /> |
|
<xsl:text>, </xsl:text> |
|
</xsl:if> |
|
<xsl:if |
|
test="b:Year"> |
|
<xsl:value-of select="b:Year" /> |
|
</xsl:if> |
|
|
|
<xsl:if test="b:Pages"> |
|
<xsl:text>; pp </xsl:text> |
|
<xsl:value-of select="b:Pages" /> |
|
</xsl:if> |
|
<xsl:text>.</xsl:text> |
|
</xsl:when> |
|
|
|
<!-- 4. レポート (Report) --> |
|
<!-- 書式: Title(Italic); Report No; Inst: City, Year. --> |
|
<xsl:when test="b:SourceType='Report'"> |
|
<xsl:call-template name="Title_Italic_Semicolon" /> |
|
<xsl:if test="b:Number"> <!-- |
|
Report Number if standard mapping --> |
|
<xsl:value-of |
|
select="b:Number" /> |
|
<xsl:text>; </xsl:text> |
|
</xsl:if> |
|
<xsl:if |
|
test="b:Institution"> |
|
<xsl:value-of select="b:Institution" /> |
|
<xsl:text>: </xsl:text> |
|
</xsl:if> |
|
<xsl:if |
|
test="b:City"> |
|
<xsl:value-of select="b:City" /> |
|
<xsl:text>, </xsl:text> |
|
</xsl:if> |
|
<xsl:if |
|
test="b:Year"> |
|
<xsl:value-of select="b:Year" /> |
|
</xsl:if> |
|
<xsl:text>.</xsl:text> |
|
</xsl:when> |
|
|
|
<!-- 5. 特許 (Patent) --> |
|
<!-- 書式: Title. Patent Number, Date/Year. --> |
|
<xsl:when test="b:SourceType='Patent'"> |
|
<xsl:call-template name="Title_Plain" /> |
|
<xsl:if test="b:PatentNumber"> |
|
<xsl:value-of select="b:PatentNumber" /> |
|
</xsl:if> |
|
<xsl:if |
|
test="b:Year"> |
|
<xsl:text>, </xsl:text> |
|
<xsl:value-of select="b:Year" /> |
|
</xsl:if> |
|
<xsl:text>.</xsl:text> |
|
</xsl:when> |
|
|
|
<!-- 6. Webサイト (InternetSite) --> |
|
<!-- 書式: Title. URL (accessed Date). --> |
|
<xsl:when test="b:SourceType='InternetSite' or b:SourceType='DocumentFromInternetSite'"> |
|
<xsl:call-template name="Title_Plain" /> |
|
<xsl:if test="b:URL"> |
|
<xsl:value-of select="b:URL" /> |
|
<xsl:text> </xsl:text> |
|
</xsl:if> |
|
<xsl:if |
|
test="b:YearAccessed"> |
|
<xsl:text>(accessed </xsl:text> |
|
<xsl:if test="b:MonthAccessed"> |
|
<xsl:value-of select="b:MonthAccessed" /> |
|
<xsl:text> </xsl:text> |
|
</xsl:if> |
|
<xsl:if |
|
test="b:DayAccessed"> |
|
<xsl:value-of select="b:DayAccessed" /> |
|
<xsl:text>, </xsl:text> |
|
</xsl:if> |
|
<xsl:value-of |
|
select="b:YearAccessed" /> |
|
<xsl:text>)</xsl:text> |
|
</xsl:if> |
|
<xsl:text>.</xsl:text> |
|
</xsl:when> |
|
|
|
<!-- 7. その他 (Film, Art, Sound, Misc) --> |
|
<!-- 汎用書式: Title(Italic). Production/Publisher, Year. --> |
|
<xsl:otherwise> |
|
<xsl:call-template name="Title_Italic_Semicolon" /> |
|
<xsl:if |
|
test="b:ProductionCompany"> |
|
<xsl:value-of select="b:ProductionCompany" /> |
|
<xsl:text>, </xsl:text> |
|
</xsl:if> |
|
<xsl:if |
|
test="not(b:ProductionCompany) and b:Publisher"> |
|
<xsl:value-of select="b:Publisher" /> |
|
<xsl:text>, </xsl:text> |
|
</xsl:if> |
|
<xsl:if |
|
test="b:Year"> |
|
<xsl:value-of select="b:Year" /> |
|
</xsl:if> |
|
<xsl:text>.</xsl:text> |
|
</xsl:otherwise> |
|
|
|
</xsl:choose> |
|
</xsl:template> |
|
|
|
<!-- ================================================================= --> |
|
<!-- ヘルパーテンプレート --> |
|
<!-- ================================================================= --> |
|
|
|
<!-- 著者名リスト (ACS: Last, Init.; Last, Init.) --> |
|
<xsl:template name="ACS_AuthorList"> |
|
<xsl:variable name="AuthorList" select="b:Author/b:Author/b:NameList/b:Person" /> |
|
<!-- 著者以外の役割(発明者、監督など)へのフォールバック --> |
|
<xsl:variable |
|
name="InventorList" select="b:Author/b:Inventor/b:NameList/b:Person" /> |
|
<xsl:variable |
|
name="DirectorList" select="b:Author/b:Director/b:NameList/b:Person" /> |
|
<xsl:variable |
|
name="ArtistList" select="b:Author/b:Artist/b:NameList/b:Person" /> |
|
|
|
<xsl:variable |
|
name="TargetList"> |
|
<xsl:choose> |
|
<xsl:when test="$AuthorList"><xsl:copy-of select="$AuthorList" /></xsl:when> |
|
<xsl:when test="$InventorList"><xsl:copy-of select="$InventorList" /></xsl:when> |
|
<xsl:when test="$DirectorList"><xsl:copy-of select="$DirectorList" /></xsl:when> |
|
<xsl:when test="$ArtistList"><xsl:copy-of select="$ArtistList" /></xsl:when> |
|
</xsl:choose> |
|
</xsl:variable> |
|
|
|
<xsl:choose> |
|
<!-- 人名リストがある場合 --> |
|
<xsl:when test="msxsl:node-set($TargetList)/b:Person"> |
|
<xsl:for-each select="msxsl:node-set($TargetList)/b:Person"> |
|
<xsl:value-of select="b:Last" /> |
|
<xsl:if test="b:First"> |
|
<xsl:text>, </xsl:text> |
|
<xsl:value-of select="substring(b:First, 1, 1)" /> |
|
<xsl:text>.</xsl:text> |
|
</xsl:if> |
|
<xsl:if |
|
test="b:Middle"> |
|
<xsl:text> </xsl:text> |
|
<xsl:value-of select="substring(b:Middle, 1, 1)" /> |
|
<xsl:text>.</xsl:text> |
|
</xsl:if> |
|
<xsl:if |
|
test="position() != last()"> |
|
<xsl:text>; </xsl:text> |
|
</xsl:if> |
|
<xsl:if |
|
test="position() = last()"> |
|
<xsl:text>. </xsl:text> |
|
</xsl:if> |
|
</xsl:for-each> |
|
</xsl:when> |
|
|
|
<!-- 企業・団体著者の場合 --> |
|
<xsl:when test="b:Author/b:Author/b:Corporate"> |
|
<xsl:value-of select="b:Author/b:Author/b:Corporate" /> |
|
<xsl:text>. </xsl:text> |
|
</xsl:when> |
|
</xsl:choose> |
|
</xsl:template> |
|
|
|
<!-- 編集者リスト (ACS: Editors, Ed.) --> |
|
<xsl:template name="ACS_EditorList"> |
|
<xsl:variable name="EditorList" select="b:Author/b:Editor/b:NameList/b:Person" /> |
|
<xsl:if |
|
test="$EditorList"> |
|
<xsl:for-each select="$EditorList"> |
|
<xsl:value-of select="b:Last" /> |
|
<xsl:if test="b:First"> |
|
<xsl:text>, </xsl:text> |
|
<xsl:value-of select="substring(b:First, 1, 1)" /> |
|
<xsl:text>.</xsl:text> |
|
</xsl:if> |
|
<xsl:if |
|
test="b:Middle"> |
|
<xsl:text> </xsl:text> |
|
<xsl:value-of select="substring(b:Middle, 1, 1)" /> |
|
<xsl:text>.</xsl:text> |
|
</xsl:if> |
|
<xsl:if |
|
test="position() != last()"> |
|
<xsl:text>; </xsl:text> |
|
</xsl:if> |
|
</xsl:for-each> |
|
<xsl:text>, Eds.; </xsl:text> |
|
</xsl:if> |
|
</xsl:template> |
|
|
|
<!-- 書名(プレーンテキスト + ピリオド) --> |
|
<xsl:template name="Title_Plain"> |
|
<xsl:if test="b:Title"> |
|
<xsl:value-of select="b:Title" /> |
|
<xsl:text>. </xsl:text> |
|
</xsl:if> |
|
</xsl:template> |
|
|
|
<!-- 書名(イタリック + セミコロン) --> |
|
<xsl:template name="Title_Italic_Semicolon"> |
|
<xsl:if test="b:Title"> |
|
<i> |
|
<xsl:value-of select="b:Title" /> |
|
</i> |
|
<xsl:text>; </xsl:text> |
|
</xsl:if> |
|
</xsl:template> |
|
|
|
<!-- 出版社・都市・年(書籍用共通) --> |
|
<xsl:template name="Publisher_City_Year"> |
|
<xsl:if test="b:Publisher"> |
|
<xsl:value-of select="b:Publisher" /> |
|
<xsl:text>: </xsl:text> |
|
</xsl:if> |
|
<xsl:if |
|
test="b:City"> |
|
<xsl:value-of select="b:City" /> |
|
<xsl:text>, </xsl:text> |
|
</xsl:if> |
|
<xsl:if |
|
test="b:Year"> |
|
<xsl:value-of select="b:Year" /> |
|
</xsl:if> |
|
<xsl:text>.</xsl:text> |
|
</xsl:template> |
|
|
|
</xsl:stylesheet> |