Dublin Core (XML) 目録レコードを処理し、各書籍の引用の Chicago、APA、および MLA バージョンを作成する XSLT スタイルシートを作成しようとしています。APA の作成者以外はすべてうまくいきました。著者のための APA のスタイルでは、著者の姓 (完了)、コンマ、最初のイニシャル (完了)、その他のイニシャル (私の行き詰まりの問題) が必要です。
私が今持っているもの(およびサンプル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.
多くの場合、それは問題ではありませんが、J.R.R. Tolkien
またはのように、著者のミドルネームのイニシャルを返す必要がある場合がありますJ.K. Rowling
。
そのため、スペースの最初のインスタンスだけでなく、各スペースの後にある文字を返すことができる必要があります。
何か案は?