可以使用XSL模板將第二個字符串的第一個字母更改爲小寫嗎?或者有沒有辦法在HTML中將第二個字符串的第一個字母改爲小寫?第一個字母的僞代碼沒有工作,因爲它只能是選擇器的主題。使用XSL組合XML中的兩個字符串,輸出爲HTML
即:
「名稱」,
:
在XML 「 [R eturns的東西的東西。」
需要(在HTML中):
名稱 r會產生某種東西。
可以使用XSL模板將第二個字符串的第一個字母更改爲小寫嗎?或者有沒有辦法在HTML中將第二個字符串的第一個字母改爲小寫?第一個字母的僞代碼沒有工作,因爲它只能是選擇器的主題。使用XSL組合XML中的兩個字符串,輸出爲HTML
即:
「名稱」,
:
在XML 「 [R eturns的東西的東西。」
需要(在HTML中):
名稱 r會產生某種東西。
這XSLT轉換:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/*">
<xsl:variable name="v1stchar" select=
"substring(translate(s[2],translate(s[2],'ABCDEFGHIJKLMNOPQRSTUVWXYZ', ''),''),1,1)"/>
<xsl:value-of select=
"concat(s[1],
' ',
substring-before(s[2], $v1stchar),
translate($v1stchar,'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'),
substring-after(s[2], $v1stchar)
)
"/>
</xsl:template>
</xsl:stylesheet>
當這個XML文檔施加:
<t>
<s>Name</s>
<s>*R*eturns the something of the something.</s>
</t>
產生想要的,正確的結果:
Name *r*eturns the something of the something.
即使在單個XPath表達式中也可以這樣做,但它看起來很笨拙。
@Dimitre:很好的答案,但我認爲OP的問題有那些'*'只是爲了澄清。另外,它必須用'fn:translate()'來表示,你需要明確定義alfabeth。你知道,我不是英語。 – 2010-09-22 17:56:09
@Alejandro:沒問題,只是傳遞字母,大寫和小寫作爲參數。 – 2010-09-22 18:04:57
@Alejandro:辯論OP的想法是沒用的......我們寫他寫的東西。很明顯,XLM表示XML,而「sentense」表示「串」。其他的一切都是猜測,讓我們不要將我的幻想與你的比較:) – 2010-09-22 18:07:37
好問題(+1)。查看我的答案以獲取簡短的XSLT解決方案。 :) – 2010-09-22 17:09:29