如何使用 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 将小写转换为大写而不更改内部元素的主要内容,如果未能解决你的问题,请参考以下文章

如何使用ruby / rails将所有大写字母转换为适当的首字母大写字母,其余为小写?

readAxt() 将小写转换为大写

编写程序输入一个小写字母,如何将其转换为大写字母输出

python如何定义函数将小写转换为大写

python如何定义函数将小写转换为大写

如何使用 CSS 将大写文本转换为标题大小写