“Double Eval”XPath表达式有一个尾随的分号......给我适合

时间:2012-09-13 18:50:20

标签: xml xpath infopath

在使用“Double Eval”XPath表达式与MS InfoPath结合使用时捕获重复结构的内容时遇到拖尾分号问题。我需要从结果中消除尾随的分号。这是表达式:

eval(eval(Repeater, 'concat(my:Node1DropDown, ";")'), "..")

上面表达式的结果可以在下面的XML中的“Node1Eval”中看到。除了结果中的尾随分号外,表达式会很好。

<?xml version="1.0" encoding="UTF-8"?><?mso-infoPathSolution solutionVersion="1.0.0.4" productVersion="14.0.0" PIVersion="1.0.0.0" href="file:///C:\Documents%20and%20Settings\Chris\Local%20Settings\Application%20Data\Microsoft\InfoPath\Designer3\e2c7e5c6af2049e9\manifest.xsf" ?><?mso-application progid="InfoPath.Document" versionProgid="InfoPath.Document.2"?>
<my:myFields xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:my="http://schemas.microsoft.com/office/infopath/2003/myXSD/2012-08-28T16:45:10" xmlns:xd="http://schemas.microsoft.com/office/infopath/2003" xml:lang="en-us">
<my:Master_Section>
    <my:group2>
        <my:Repeater>
            <my:Node1DropDown>Lasers</my:Node1DropDown>
            <my:Node2DropDown>Lemon</my:Node2DropDown>
        </my:Repeater>
        <my:Repeater>
            <my:Node1DropDown>Sharks</my:Node1DropDown>
            <my:Node2DropDown>Apple</my:Node2DropDown>
        </my:Repeater><my:Repeater>
            <my:Node1DropDown>Monkeys</my:Node1DropDown>
            <my:Node2DropDown>Lemon</my:Node2DropDown>
        </my:Repeater>
    </my:group2>
    <my:Node1Eval>Lasers;Sharks;Monkeys;</my:Node1Eval>
    <my:Node2Eval>Lemon;Apple;Lemon;</my:Node2Eval>
</my:Master_Section>
</my:myFields>

我猜想添加一些与返回项目位置相关的逻辑可以帮助消除尾随的分号。

该问题的真正的症结在于,分号总是;我需要Node1Eval字段为空,直到它实际显示一个值。如果没有,那么它将弄乱我试图运行的[text()] XPath表达式测试。

1 个答案:

答案 0 :(得分:1)

表示你的

   eval(eval(Repeater,'concat(my:Node1DropDown,“;”)'),“..”)

X ,它将是

  

子串( X ,1,字符串长度( X ) - 1)

最终给予

  

substring(eval(eval(Repeater,'concat(my:Node1DropDown,“;”)'),“..”);   1,字符串长度(eval(eval(Repeater,'concat(my:Node1DropDown,“;”)'),   “..”)) - 1)

<强>更新
如果您按“子字符串搜索(eval(eval(”,您可以确认它经常用于在Infopath中重复控制,例如,this discussion

  

我需要Node1Eval字段为空,直到它实际上有一个值   显示

在Infopath Designer中,根据您的规则操作(或默认值),无论您在何处插入和编辑Xpath表达式,请按 fx &gt;双击转发器&gt;按过滤数据... 按钮并插入您想要的任何条件。
对于Node1DropDown非空白的情况,可能会导致

eval(eval(Repeater[Node1DropDown != ""], 'concat(my:Node1DropDown, ";")'), "..")