XPath: получить значение последнего брата в узле
Я пытаюсь создать выражение XPath для использования в MS InfoPath, чтобы получить значение последнего элемента в узле. (Надеюсь, я правильно сформулировал этот вопрос, так как едва использовал XPath).
Мне нужно идентифицировать самый последний экземпляр узла "NamesEval" внутри узла "RepeaterGroup". Гипотетически я буду смотреть, будет ли "Стив" присутствовать на последнем мероприятии; Я проверю это, используя contains(LatestEvent, "Steve")
XPath выражение. Как получить "LatestEvent" для загрузки только самого последнего значения "NamesEval"?
<?xml version="1.0" encoding="UTF-8"?><?mso-infoPathSolution solutionVersion="1.0.0.2" productVersion="14.0.0" PIVersion="1.0.0.0" href="file:///C:\Documents%20and%20Settings\Chris\Local%20Settings\Application%20Data\Microsoft\InfoPath\Designer3\db543e141b8f4832\manifest.xsf" ?><?mso-application progid="InfoPath.Document" versionProgid="InfoPath.Document.3"?><my:myFields xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:my="http://schemas.microsoft.com/office/infopath/2003/myXSD/2012-09-07T14:19:10" xmlns:xd="http://schemas.microsoft.com/office/infopath/2003" xml:lang="en-us">
<my:InitialSection>
<my:InitialField>1</my:InitialField>
<my:InitialDate>2012-09-14</my:InitialDate>
</my:InitialSection>
<my:RepeaterSection>
<my:RepeaterGroup>
<my:RepeaterField>2</my:RepeaterField>
<my:RepeaterDate>2012-09-15</my:RepeaterDate>
<my:NamesGroup>
<my:NamesRepeater>
<my:Name>Steve</my:Name>
</my:NamesRepeater>
<my:NamesRepeater>
<my:Name>Ashley</my:Name>
</my:NamesRepeater>
<my:NamesRepeater>
<my:Name>Josh</my:Name>
</my:NamesRepeater>
</my:NamesGroup>
<my:NamesEval>Steve;Ashley;Josh;</my:NamesEval>
</my:RepeaterGroup>
<my:RepeaterGroup>
<my:RepeaterField>3</my:RepeaterField>
<my:RepeaterDate>2012-09-16</my:RepeaterDate>
<my:NamesGroup>
<my:NamesRepeater>
<my:Name>Amanda</my:Name>
</my:NamesRepeater>
<my:NamesRepeater>
<my:Name>Greg</my:Name>
</my:NamesRepeater>
<my:NamesRepeater>
<my:Name>Steve</my:Name>
</my:NamesRepeater>
</my:NamesGroup>
<my:NamesEval>Amanda;Greg;Steve;</my:NamesEval>
</my:RepeaterGroup>
</my:RepeaterSection>
РЕДАКТИРОВАТЬ И ОТВЕТИТЬ
Чороба ответил на вопрос ниже - вот решение: //my:RepeaterGroup[0=count(following-sibling::my:RepeaterGroup)]//my:NamesEval
1 ответ
Я не уверен, что понимаю ваш вопрос. Если вы пытаетесь проверить, что последнее NamesEval содержит строку "Steve", вы можете использовать следующее выражение XPath:
contains((//my:NamesEval)[last()],'Steve')