以下是我的xml
<tag>
<subTag1>
<tagGroup11>
<data111>
...
我需要选择所有相同的xml元素,但需要使用驼峰大小写。因此,例如,我在XSLT转换后的新xml需要看起来像
<Tag>
<SubTag1>
<TagGroup11>
<Data111>A</Data111>
<Data112>B</Data112>
<Data113>C</Data113>
</TagGroup11>
<TagGroup12>
<Data121>D</Data121>
<Data122>E</Data122>
<Data123>F</Data123>
</TagGroup12>
</SubTag1>
<SubTag2>
<TagGroup22>
<Data221>twotwoone</Data221>
<Data222>twotwotwo</Data222>
<Data223>two two three</Data223>
</TagGroup22>
<TagGroup23>
<Data231>twotwoone</Data231>
<Data232>twotwotwo</Data232>
<Data233>two two three</Data233>
</TagGroup23>
</SubTag2>
</Tag>
有人可以帮助我使用xslt吗?
答案 0 :(得分:2)
@arkonautom提出了一个有效的观点:你还没有完全明确你对这种转变的期望。也就是说,以下内容将按您的要求进行。
当这个XSLT:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output omit-xml-declaration="no" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:variable name="vLowercase" select="'abcdefghijklmnopqrstuvwxyz'"/>
<xsl:variable name="vUppercase" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'"/>
<xsl:template match="*">
<xsl:element
name="{concat(translate(substring(local-name(), 1, 1),
$vLowercase,
$vUppercase),
substring(local-name(), 2))}"
>
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
...针对您提供的XML运行(我假设,充实了结构的其余部分):
<tag>
<subTag1>
<tagGroup11>
<data111>A</data111>
<data112>B</data112>
<data113>C</data113>
</tagGroup11>
<tagGroup12>
<data121>D</data121>
<data122>E</data122>
<data123>F</data123>
</tagGroup12>
</subTag1>
<subTag2>
<tagGroup22>
<data221>twotwoone</data221>
<data222>twotwotwo</data222>
<data223>two two three</data223>
</tagGroup22>
<tagGroup23>
<data231>twotwoone</data231>
<data232>twotwotwo</data232>
<data233>two two three</data233>
</tagGroup23>
</subTag2>
</tag>
...生成了想要的结果:
<?xml version="1.0" encoding="UTF-8"?>
<Tag>
<SubTag1>
<TagGroup11>
<Data111>A</Data111>
<Data112>B</Data112>
<Data113>C</Data113>
</TagGroup11>
<TagGroup12>
<Data121>D</Data121>
<Data122>E</Data122>
<Data123>F</Data123>
</TagGroup12>
</SubTag1>
<SubTag2>
<TagGroup22>
<Data221>twotwoone</Data221>
<Data222>twotwotwo</Data222>
<Data223>two two three</Data223>
</TagGroup22>
<TagGroup23>
<Data231>twotwoone</Data231>
<Data232>twotwotwo</Data232>
<Data233>two two three</Data233>
</TagGroup23>
</SubTag2>
</Tag>