2010-09-16 55 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) 
相關問題