gpt4 book ai didi

xslt - XSL 2.0 : Format String with _ to CamelCase

转载 作者:行者123 更新时间:2023-12-02 03:27:33 26 4
gpt4 key购买 nike

我正在使用 XSLT (2.0) 作为 Java 代码生成器。目前我有一个描述数据库表的 XML,我想为其生成实体类。

表的列名总是小写,单词之间带有_。
示例:bat_valid_from
我想在 Java 类中将其重命名为首字母小写的驼峰式
示例:batValidFrom

因为我在我的 codeGen 中经常需要这种安静,所以我喜欢为它提供一个函数。但我只能通过两个子函数来实现。

<xsl:function name="local:VarName">
<xsl:param name="columnName"/>
<xsl:value-of select="lower-case(substring($columnName,1,1))"/>
<xsl:value-of select="substring(local:VarName_sub($columnName),2)"/>
</xsl:function>
<xsl:function name="local:VarName_sub">
<xsl:param name="columnName"/>
<xsl:value-of select="local:VarName_sub_sub($columnName)"/>
</xsl:function>
<xsl:function name="local:VarName_sub_sub">
<xsl:param name="columnName"/>
<xsl:for-each select="tokenize($columnName, '_')">
<xsl:value-of select="upper-case(substring(.,1,1))"/>
<xsl:value-of select="substring(.,2)"/>
</xsl:for-each>
</xsl:function>

也许有人有办法简化这个?
如果没有子函数,我会得到以下错误:
不允许将多个项目的序列作为 fn:substring() 的第一个参数

PS:我没有贴出完整的代码来缩短问题

最佳答案

XSLT/XPath 2.0 支持 for expressions .你可以这样做:

string-join(
for $part in tokenize($input, '_')
return concat(
upper-case(substring($part, 1, 1)),
substring($part, 2)
)
, '')

$input 设置为 'bat_valid_from',此表达式将生成 'BatValidFrom'

我将小写(或不大写)首字母作为练习。

关于xslt - XSL 2.0 : Format String with _ to CamelCase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52792096/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com