2010-09-16 29 views
0

我有一个看起来像这样的XML文件:如果存在具有相同名称的子元素,如何将子元素转换为大写字母?

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

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

我写了这个XSLT

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

它依赖于大写的个人信息的姓的姓氏转换。所以它把它转换成SMITH,我希望它被转换成JOHNSON。 有人能告诉我怎么做到这一点? 非常感谢。

+1

'// LastName'指文档中的任何'LastName'元件。然后'fn:traslate'从该节点集取得第一个节点。因此,它总是会评估为相同的字符串值......您应该告诉我们该“xsl:value-of”的上下文 – 2010-09-16 14:15:26

回答

1

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

尝试删除//xsl:value-of

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

如果这不起作用,尝试张贴更多的XSL的让我们看看。

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

使用

translate(/*/DependentInfo/LastName, $smallcase, $uppercase) 
相关问题