Есть ли способ изменить следующее выражение XPath, чтобы вернуть количество предыдущих «похожих» элементов? Мне нужен относительный подсчет количества похожих узлов в данной ветке (я думаю, что это ветка...). Это используется в MS InfoPath:
count(../preceding-sibling::*) + 1
Я полагаю, что структура моего образца XML не позволяет ему работать должным образом. Вы заметите, что все значения «Количество» в моем XML имеют номер 1. Значение DateRepeaterCounter
должно сбрасываться в новом узле MasterRepeater
, а MasterRepeaterCounter
должно отражать общее количество узлов MasterRepeater
.
Мне еще предстоит преодолеть кривую обучения с XPath.
<?xml version="1.0" encoding="UTF-8"?><?mso-infoPathSolution solutionVersion="1.0.0.25" productVersion="14.0.0" PIVersion="1.0.0.0" href="file:///C:\Documents%20and%20Settings\Chris\Local%20Settings\Application%20Data\Microsoft\InfoPath\Designer3\e1d38b31bb224d94\manifest.xsf" ?><?mso-application progid="InfoPath.Document" versionProgid="InfoPath.Document.2"?>
<my:myFields xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xhtml="http://www.w3.org/1999/xhtml" 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:PrimarySection>
<my:MasterRepeater>
<my:MasterRepeaterCounter>1</my:MasterRepeaterCounter>
<my:DateSection>
<my:DateRepeater>
<my:Date>2012-09-12</my:Date>
<my:DateRepeaterCounter>1</my:DateRepeaterCounter>
</my:DateRepeater>
<my:DateRepeater>
<my:Date>2012-09-13</my:Date>
<my:DateRepeaterCounter>1</my:DateRepeaterCounter>
</my:DateRepeater>
<my:DateRepeater>
<my:Date>2012-09-14</my:Date>
<my:DateRepeaterCounter>1</my:DateRepeaterCounter>
</my:DateRepeater>
</my:DateSection>
</my:MasterRepeater>
<my:MasterRepeater>
<my:MasterRepeaterCounter>1</my:MasterRepeaterCounter>
<my:DateSection>
<my:DateRepeater>
<my:Date>2012-09-15</my:Date>
<my:DateRepeaterCounter>1</my:DateRepeaterCounter>
</my:DateRepeater>
<my:DateRepeater>
<my:Date>2012-09-16</my:Date>
<my:DateRepeaterCounter>1</my:DateRepeaterCounter>
</my:DateRepeater><my:DateRepeater>
<my:Date>2012-09-17</my:Date>
<my:DateRepeaterCounter>1</my:DateRepeaterCounter>
</my:DateRepeater>
</my:DateSection>
</my:MasterRepeater>
</my:PrimarySection>
</my:myFields>
ИЗМЕНИТЬ И ОТВЕТИТЬ
InfoPath как-то испортил выражение... После ввода выражения в одно поле и последующего копирования его в другое оно перестало работать правильно. При повторном вводе выражения в формате, указанном выше, проблема была решена. Я сам отвечу, когда StackOverflow позволит это. Спасибо!
count(../preceding-sibling::*) + 1
он заработал отлично. Итак... Еще раз спасибо Microsoft за то, что сводили меня с ума. - person Shrout1   schedule 12.09.2012