如何使用 XSL 将小写转换为大写而不更改内部元素
Posted
技术标签:
【中文标题】如何使用 XSL 将小写转换为大写而不更改内部元素【英文标题】:How to convert lowercase to uppercase without any change inner elements using XSL 【发布时间】:2021-12-14 06:10:26 【问题描述】:输入:
<title>This is <b>sample</b> ack <i>file</i>: good</title>
需要输出:
<title>This is <b>sample</b> ack <i>file</i>: Good</title>
使用 XSL 将字母 'g' 小写转换为大写,无需任何更改。
提前致谢。
【问题讨论】:
这不是一个定义明确的问题。请解释您的示例中“g”字符的区别。同时说明您的处理器支持哪个版本的 XSLT。 我正在使用 XSLT 2.0。在冒号 (:) 之后,第一个字母必须大写。所以,请解释一下。 我已经编辑了您的问题,使代码作为代码可见。下次请自己动手。 【参考方案1】:在 XSLT 2.0 中,您可以:
<xsl:template match="title/text()">
<xsl:analyze-string select="." regex=":\s*.">
<xsl:matching-substring>
<xsl:value-of select="upper-case(.)"/>
</xsl:matching-substring>
<xsl:non-matching-substring>
<xsl:value-of select="."/>
</xsl:non-matching-substring>
</xsl:analyze-string>
</xsl:template>
演示:https://xsltfiddle.liberty-development.net/gVAkJ5g/1
【讨论】:
内部元素没有任何变化,如斜体和粗体。有可能吗? 如果冒号和后面的字符在同一个文本节点中是可能的 - 请参阅我编辑的答案。否则会变得更复杂。以上是关于如何使用 XSL 将小写转换为大写而不更改内部元素的主要内容,如果未能解决你的问题,请参考以下文章