編集:この質問は「コンテキストノードの要素をポイントするにはどうすればよいですか?」と読む必要があります。この状況では、答えは非常に簡単です。ラーシュの回答から:
"my:Line_Item_Mod_0 = 'true'"
また、これが非常に明白な質問であった場合は、私を許してください。「コンテキストノード」の用語がわからなかったので、おそらくgoogleとStackOverflow検索があまり役に立たなかったのです。
コンテキストについては、質問の残りの部分を読んでください。
Line_Item_Mod_0
MS InfoPathフォームを条件付きでフォーマットするには、各ノード内の現在の値を返すXPath式が必要です。私はXPathに非常に満足しており、この動作(式で示される)の適切な用語が何であるかわかりません。これが私のXMLです:
<?xml version="1.0" encoding="UTF-8"?><?mso-infoPathSolution solutionVersion="1.0.0.504" productVersion="14.0.0" PIVersion="1.0.0.0" href="file:///C:\Documents%20and%20Settings\Chris\Local%20Settings\Application%20Data\Microsoft\InfoPath\Designer3\c37482678ae440c9\manifest.xsf" ?><?mso-application progid="InfoPath.Document" versionProgid="InfoPath.Document.2"?><?mso-infoPath-file-attachment-present?>
<my:myFields xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:dfs="http://schemas.microsoft.com/office/infopath/2003/dataFormSolution" xmlns:pc="http://schemas.microsoft.com/office/infopath/2007/PartnerControls" xmlns:my="http://schemas.microsoft.com/office/infopath/2003/myXSD/2011-05-05T19:56:08" xmlns:xd="http://schemas.microsoft.com/office/infopath/2003" xml:lang="en-us">
<my:MasterSection>
<my:Project_Information>
<my:Line_Items>
<my:Counter>1</my:Counter>
<my:Authorized_Number>4</my:Authorized_Number>
<my:XPathLINCounter>Line Item 1</my:XPathLINCounter>
<my:Line_Item_Mod_0>false</my:Line_Item_Mod_0>
</my:Line_Items>
<my:Line_Items>
<my:Counter>2</my:Counter>
<my:Authorized_Number>7</my:Authorized_Number>
<my:XPathLINCounter>Line Item 2</my:XPathLINCounter>
<my:Line_Item_Mod_0>true</my:Line_Item_Mod_0>
</my:Line_Items>
<my:Line_Items>
<my:Counter>3</my:Counter>
<my:Authorized_Number>2</my:Authorized_Number>
<my:XPathLINCounter>Line Item 3</my:XPathLINCounter>
<my:Line_Item_Mod_0>false</my:Line_Item_Mod_0>
</my:Line_Items>
</my:Project_Information>
</my:MasterSection>
</my:myFields>
現在のノードの「mod」値が1か0かを評価しようとしています。これを行う式は既にありますが、何らかの理由でInfoPathの条件付き書式設定が気に入らないのです。このmod式の結果はLine_Item_Mod_0
要素で確認できます。
私がする必要があるのは、各ノードLine_Item_Mod_0
内の要素をターゲットにすることだけです。Line_Items
親ノードのの値を返す式を作成できないようですLine_Item_Mod_0
(または「current」が正しい用語である可能性があります)。
IEノード1には、常に値をLine_Items
返す式が含まれます。false
Line_Item_Mod_0
これは単純なはずですが、現在のノード内で式を固定することができないようです。
式はノードを(count(preceding-sibling::my:*) + 1) mod 2 > 0
生成しLine_Item_Mod_0
ますが、ルールとして適用すると、条件付き書式ではうまく機能しません。理由がわかりません。
それをバイパスして、「true」または「false」の値を直接評価したいと思います。