0

頭文字大文字のタイトルを適切なタイトルケースに変更したいと考えています。つまり、冠詞、接続詞、一部の前置詞は小文字です。最初は、「ストップワード」のリストの xml ドキュメントを使用してこれを達成したいと考えていましたが、成功に最も近いのは、分析文字列の正規表現によるものでした。問題は、xslt の初心者として、無期限にループせずに再帰的にする方法がわからないことです。また、理想的には、これは関数であり、テンプレートではありません。そこにいる専門家からの助けに感謝します。

入力:

<element>
    <title>The String Is In First Letter Caps And May Have A Word Or Words Such As A, An, Or The And And, But, For, As, At, In, Or When.</title>
</element> 

xslt:

<xsl:template name="proper-case" match="/element/title">
<xsl:param name="title" select="."/> 
    <xsl:analyze-string select="$title" regex="\WA\W|\WAn\W|\WThe\W|\WAnd\W|\WBut\W|\WFor\W|\WNor\W|\WOr\W|\WFSo\W|\WYet\W|\WAs\W|\WAt\W|\WBy\W|\WIf\W|\WIn\W|\WOf\W|\WOn\W|\WTo\W|\WWith\W" flags="i">
    <xsl:matching-substring>
        <xsl:value-of select="lower-case(.)"/>                               
    </xsl:matching-substring>
    <xsl:non-matching-substring>
        <xsl:value-of select="."/>               
    </xsl:non-matching-substring>
    </xsl:analyze-string>
</xsl:template>

現在の出力:

<element>
    <title>The String Is in First Letter Caps and May Have a Word or Words Such as A, an, or The and And, but, for, as, at, in, or When.</title>
</element>

望ましい出力:

<element>
    <title>The String Is in First Letter Caps and May Have a Word or Words Such as a, an, or the and and, but, for, as, at, in, or when.</title>
</element>
4

1 に答える 1