是否可以根据来源类型(书籍、杂志等)过滤参考书目(Microsoft Word)中的来源?

是否可以根据来源类型(书籍、杂志等)过滤参考书目(Microsoft Word)中的来源?

我正在使用 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,以便它从特定项目中获取过滤信息,而不是对条件进行硬编码,但也许最好先看看这是否可以为您完成工作。

相关内容