3
我正在尝试编写一个处理都柏林核心(XML)编目记录并为每本书创建芝加哥,APA和MLA版本的引文的XSLT样式表。除了APA作者之外,我已经将所有的工作都做好了。 APA对作者的风格要求作者的姓氏(完成),逗号,第一首字母(完成),任何其他首字母(我的卡住地点问题)。使用XSLT在字符串/子串中的每个实例后选择
我现在所拥有的(下面,品尝DC元素):
<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>
对于以下格式的情况下(出什么目录使用):
<dc:creator>Friend, Natasha</dc:creator>
这工作得很好,返回:Friend, N.
但
<dc:creator>Tolkien, J. R. R.</dc:creator>
返回:Tolkien, J.
在很多也没关系的情况下,反而会出现情况下,它确实需要返回作者的中间名首字母(S),像J.R.R. Tolkien
或J.K. Rowling
。
因此,我需要能够返回每个空间后发生的字母,而不仅仅是空间的第一个实例。
任何想法?
我一直使用1.0自我更熟悉它,但我会检查一下,谢谢。除了每个之后,回报看起来都很棒,但我会把它拿出来。 – Talia
@Talia:我认为'','是被要求作为新的分隔符。如果不是什么应该是分隔符?我还将提供一个XSLT 1.0解决方案。 –
@Talia,用新增的XSLT 1.0解决方案更新了答案。 –