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