我正在尝试编写一个 XSLT 样式表来处理都柏林核心 (XML) 编目记录并为每本书创建芝加哥、APA 和 MLA 版本的引文。除了 APA 的作者之外,我一切都做得很好。APA 的作者风格要求作者的姓氏 (done)、逗号、首字母 (done)、任何其他首字母 (我的卡住问题)。
我现在拥有的(示例直流元件如下):
<xsl:value-of select="substring-before(dc:creator[1],',')" /><xsl:text>, </xsl:text><xsl:value-of select="substring(substring-after(dc:creator[1],' '),1,1)" /><xsl:for-each select="dc:creator[position()!=1]"><xsl:choose><xsl:when test="position()=last()"><xsl:text>., & </xsl:text></xsl:when><xsl:otherwise>., </xsl:otherwise></xsl:choose><xsl:value-of select="substring-before(.,',')" /><xsl:text>, </xsl:text><xsl:value-of select="substring(substring-after(.,' '),1,1)" /><xsl:if test="position()=last()">.</xsl:if></xsl:for-each>
对于以下格式的实例(out catalog 使用什么):
<dc:creator>Friend, Natasha</dc:creator>
这工作得很好并返回:Friend, N.
但对于
<dc:creator>Tolkien, J. R. R.</dc:creator>
它返回:Tolkien, J.
在很多情况下,这并不重要,但在某些情况下,它确实需要返回作者的中间名首字母,例如J.R.R. Tolkien
or J.K. Rowling
。
因此,我需要能够返回出现在每个空格之后的字母,而不仅仅是空格的第一个实例。
有任何想法吗?