Как преобразовать дочерний элемент в верхний регистр, если существует дочерний элемент с таким же именем? - PullRequest
0 голосов
/ 16 сентября 2010

У меня есть XML-файл, который выглядит так:

..
<PersonalInfo><br> <LastName>Smith</LastName><br> ...<br> </PersonalInfo><br> <DependentInfo><br> <LastName>Johnson</LastName><br> ...<br> </DependentInfo><br> ...
и мне нужно преобразовать фамилию зависимого в верхний регистр.

Я написал это XSLT

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

Преобразует фамилию зависимого лица в фамилию личной информации в верхнем регистре. Поэтому он преобразует его в SMITH, и я хочу, чтобы он был преобразован в JOHNSON. Может кто-нибудь сказать мне, как я могу это сделать? Большое спасибо.

Ответы [ 3 ]

1 голос
/ 16 сентября 2010

Трудно сказать наверняка, основываясь на примере XML и небольшом фрагменте XSL, но похоже, что контекст, в котором вы используете xsl:value-of, равен DependentInfo.Используя //LastName в функции translate(), вы указываете процессору выбрать любой LastName в XML.(В этом случае, кажется, выбирается первое вхождение LastName в PersonalInfo.)

Попробуйте удалить // из вашего xsl:value-of:

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

Еслиэто не работает, попробуйте опубликовать больше вашего XSL для нас, чтобы посмотреть.

0 голосов
/ 16 сентября 2010

Используйте

translate(/*/DependentInfo/LastName, $smallcase, $uppercase)
0 голосов
/ 16 сентября 2010
<xsl:value-of select="translate(DependentInfo/LastName, $smallcase, $uppercase)" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...