如果存在具有相同名称的子元素,如何将子元素转换为大写?

时间:2010-09-16 02:54:11

标签: xml xslt

我有一个如下所示的XML文件:

..
<PersonalInfo>
<LastName>Smith</LastName>
...
</PersonalInfo>
<DependentInfo>
<LastName>Johnson</LastName>
...
</DependentInfo>
...

我需要将依赖的姓氏转换为大写。

我写了这个XSLT

<xsl:value-of select="translate(//LastName, $smallcase, $uppercase)" /> 

它将依赖项的姓氏转换为大写字母的个人信息的姓氏。所以它将它转换为SMITH,我希望它转换为JOHNSON。 有人能告诉我怎么做吗? 非常感谢你。

3 个答案:

答案 0 :(得分:1)

基于XML示例和小型XSL片段很难说清楚,但听起来您使用xsl:value-of的上下文是DependentInfo。通过在//LastName函数中使用translate(),您告诉处理器选择XML中的任何LastName。 (在这种情况下,它似乎是在LastName中选择PersonalInfo的第一次出现。)

尝试从//

中删除xsl:value-of
<xsl:value-of select="translate(LastName, $smallcase, $uppercase)" />

如果这不起作用,请尝试发布更多的XSL供我们查看。

答案 1 :(得分:0)

<xsl:value-of select="translate(DependentInfo/LastName, $smallcase, $uppercase)" />

答案 2 :(得分:0)

使用

translate(/*/DependentInfo/LastName, $smallcase, $uppercase)