XPath“Counter”表达式未返回有效数字

时间:2012-09-12 18:24:25

标签: xml xpath counter infopath2010

有没有办法修改以下XPath表达式以返回先前“like”元素的数量?我需要给定分支中相似节点数量的相对计数(我认为它是一个分支......)这在MS InfoPath中使用:

count(../preceding-sibling::*) + 1

我相信我的示例XML的结构会阻止它按预期运行。您会注意到我的XML中的所有“Count”值都具有 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>

编辑&amp; ANSWER

InfoPath以某种方式弄乱了表达式......在一个字段中输入表达式然后将其复制到另一个字段后,它停止正常工作。在重新输入上面格式化的epxression后,它解决了问题。当StackOverflow允许时,我会自己回答。谢谢!

1 个答案:

答案 0 :(得分:1)

我会自己回答这个,因为它原来是一个InfoPath问题而不是XPath问题。 InfoPath以某种方式弄乱了表达式...在一个字段中输入表达式然后将其复制到另一个字段后,它停止正常工作。在重新输入上面格式化的epxression后,它解决了问题。谢谢你的帮助!