我希望將第一個字母大寫的標題更改爲正確的標題大小寫,即文章,連詞和選擇介詞都是小寫。最初我希望使用「停用詞」列表的xml文檔來實現這一點,但最接近我已成功通過分析字符串的正則表達式。問題是,作爲xslt的一個新手,我不知道如果沒有循環無限期地遞歸它。此外,理想情況下,這將是一個功能,而不是一個模板。我感謝那裏的專家提供的任何幫助。使用xsl:analyze-string來更改可能重複的多個單詞
輸入:
<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>
您使用哪種XSLT 2.0處理器?你爲什麼認爲你需要遞歸?它看起來像'\ b'的字邊界而不是'\ W'可以幫助。我認爲XSLT/XPath正則表達式語言的規範不支持'\ b',但我認爲撒克遜可以通過使用'flags =「!i」'來支持它。 –
@Martin Honnen:我正在使用oXygen和Saxon-PE 9.4.0.6。我以爲我需要遞歸,因爲不是所有處理「停止詞」的實例。我的背景是xhtml和css,而不是編程,所以xslt/xpath是我的新領域。謝謝。 – aglerum