我正在使用 Microsoft Word 2019 撰写一篇包含 100 多个参考文献的论文。我被要求按书籍、杂志和其他来源筛选参考书目。有什么方法可以按来源类型(例如书籍)筛选参考书目,或者就此而言,还有其他方法吗?我正在使用 APA 第六版。我相信更改文件 (APASixthEditionOfficeOnline.xsl) 将有助于解决要求。详细说明以下部分:
-<b:SortingString>
-<xsl:variable name="author0">
-<xsl:for-each select="./b:Author/*[local-name()=$MostImportantAuthorLocalName]">
<xsl:call-template name="formatPersonsAuthor"/>
</xsl:for-each>
</xsl:variable>
-<xsl:variable name="author">
-<xsl:choose>
-<xsl:when test="string-length(./b:Author/*[local-name()=$MostImportantAuthorLocalName]/b:Corporate) > 0">
<xsl:value-of select="./b:Author/*[local-name()=$MostImportantAuthorLocalName]/b:Corporate"/>
</xsl:when>
-<xsl:when test="string-length($author0) > 0">
<xsl:value-of select="$author0"/>
</xsl:when>
</xsl:choose>
</xsl:variable>
-<xsl:variable name="title">
-<xsl:choose>
-<xsl:when test="b:SourceType = 'Patent'">
-<xsl:if test="string-length(b:CountryRegion) > 0">
<xsl:text> </xsl:text>
<xsl:value-of select="b:CountryRegion"/>
</xsl:if>
-<xsl:if test="string-length(b:PatentNumber) > 0">
<xsl:text> </xsl:text>
<xsl:value-of select="b:PatentNumber"/>
</xsl:if>
</xsl:when>
-<xsl:when test="string-length(b:Title) > 0">
<xsl:text> </xsl:text>
<xsl:value-of select="b:Title"/>
</xsl:when>
</xsl:choose>
</xsl:variable>
-<xsl:if test="b:SourceType = 'Case'">
-<xsl:if test="string-length($title) > 0">
<xsl:value-of select="$title"/>
</xsl:if>
-<xsl:if test="string-length(b:Year) > 0">
<xsl:text> </xsl:text>
<xsl:value-of select="b:Year"/>
</xsl:if>
</xsl:if>
-<xsl:if test="b:SourceType != 'Case'">
-<xsl:if test="string-length($author) > 0">
<xsl:text> </xsl:text>
<xsl:value-of select="$author"/>
-<xsl:if test="string-length(b:Year) > 0">
<xsl:text> </xsl:text>
<xsl:value-of select="b:Year"/>
</xsl:if>
-<xsl:if test="string-length($title) > 0">
<xsl:value-of select="$title"/>
</xsl:if>
</xsl:if>
-<xsl:if test="string-length($author) = 0">
-<xsl:if test="string-length($title) > 0">
<xsl:value-of select="$title"/>
</xsl:if>
-<xsl:if test="string-length(b:Year) > 0">
<xsl:text> </xsl:text>
<xsl:value-of select="b:Year"/>
</xsl:if>
</xsl:if>
</xsl:if>
</b:SortingString>
你相信什么?提前谢谢
答案1
这个答案显示了如何通过改变.xsl来实现这种过滤。
如果您对同一来源有多个引用,我并不完全相信这会起作用,但是......
我认为进行过滤的最佳位置是此模板,它填充了 .xsl 此后使用的参考书目数据的副本。它大约位于代码的 2/3 处。
<xsl:template name="populateMain">
您需要替换以下行
<xsl:for-each select="/*[$Type]/b:Source">
有了这个
<xsl:variable name="Filtered">
<xsl:choose>
<xsl:when test="$Type='b:Bibliography'">
<xsl:for-each select="/*[$Type]/b:Source[b:SourceType='Film' or b:SourceType='Book']">
<xsl:copy-of select="." />
</xsl:for-each>
</xsl:when>
<xsl:otherwise>
<xsl:for-each select="/*[$Type]/b:Source">
<xsl:copy-of select="." />
</xsl:for-each>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:for-each select="msxsl:node-set($Filtered)/b:Source">
但然后编辑此行进行过滤:
<xsl:for-each select="/*[$Type]/b:Source[b:SourceType='Film' or b:SourceType='Book']">
(不幸的是,您可能必须掌握 XPath 的语法细节才能做到正确。)
您可以将旧代码保留在注释中,方法是将其括在
<!--
和
-->
在我看来,您还可以设置 XSL,以便它从特定项目中获取过滤信息,而不是对条件进行硬编码,但也许最好先看看这是否可以为您完成工作。