2

XSL テンプレートを使用して、2 番目の文字列の最初の文字を小文字に変更できますか? または、HTML で 2 番目の文字列の最初の文字を小文字に変更する方法はありますか? 最初の文字の疑似コードは、セレクターの対象にしかできないため、機能しません。

すなわち:

XML の場合:
「Name」、
何かの何かを返します。」

Need (HTML):
Nameは何かの何かを返します。

4

1 に答える 1

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 式でもこれを行うことは可能ですが、非常に扱いにくいように見えます。

于 2010-09-22T17:09:00.320 に答える