2

「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 式テストが台無しになります。

4

1 に答える 1

1

あなたの

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

Xによって、それは

substring( X , 1, string-length( X ) - 1)

最終的に与える

substring(eval(eval(Repeater, 'concat(my:Node1DropDown, ";")'), ".."); 1, string-length(eval(eval(Repeater, 'concat(my:Node1DropDown, ";") )')、"..")) - 1)

更新: " substring(eval(eval(
") で 検索すると、Infopath でコントロールを繰り返すために非常に頻繁に使用されていることが確認できます。たとえば、このディスカッション

実際に表示する値が得られるまで Node1Eval フィールドを空にする必要があります

Infopath Designer で、ルール アクション (または既定値) で、Xpath 式を挿入および編集する場所で、fxを押し、[リピーター]をダブルクリックし、[データをフィルター] ボタンを押して、必要な条件を挿入します。
この場合、Node1DropDown が空白でない場合、おそらく次のようになります。

eval(eval(Repeater[Node1DropDown != ""], 'concat(my:Node1DropDown, ";")'), "..") 
于 2012-09-14T18:57:03.177 に答える