使用XSL从XML组合两个字符串,以HTML格式输出

时间:2010-09-22 16:16:39

标签: html css xslt uppercase lowercase

我可以使用XSL模板将第二个字符串的第一个字母更改为小写吗?或者有没有办法在HTML中将第二个字符串的第一个字母更改为小写?第一个字母的伪代码不会起作用,因为它只能是选择器的主题。

即:

在XML中:
“姓名”,
R 对某些事情产生了影响。”

需要(以HTML格式):
姓名 r 让某些东西变得更好。

1 个答案:

答案 0 :(得分:2)

此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表达式中也可以这样做,但看起来真的很笨拙。