0

編集:この質問は「コンテキストノードの要素をポイントするにはどうすればよいですか?」と読む必要があります。この状況では、答えは非常に簡単です。ラーシュの回答から: "my:Line_Item_Mod_0 = 'true'"

また、これが非常に明白な質問であった場合は、私を許してください。「コンテキストノード」の用語がわからなかったので、おそらくgoogleとStackOverflow検索があまり役に立たなかったのです。

コンテキストについては、質問の残りの部分を読んでください。

Line_Item_Mod_0MS 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返す式が含まれます。falseLine_Item_Mod_0

これは単純なはずですが、現在のノード内で式を固定することができないようです。

式はノードを(count(preceding-sibling::my:*) + 1) mod 2 > 0生成しLine_Item_Mod_0ますが、ルールとして適用すると、条件付き書式ではうまく機能しません。理由がわかりません。

それをバイパスして、「true」または「false」の値を直接評価したいと思います。

4

1 に答える 1

1

現在のノード(コンテキストノード)が<my:Line_Items>要素である場合は常に、次のXPath式はその<my:Line_Item_Mod_0>子要素の値を返します。

"my:Line_Item_Mod_0"

このXPath式は、実際には要素ノードを選択します。その要素ノードが文字列コンテキストで評価される場合、その値はその子テキストノードの文字列コンテンツ、falseまたはになりtrueます。これをブール値に変換する必要がある場合は、

"my:Line_Item_Mod_0 = 'true'"

ただし、このXPath式は名前空間プレフィックスを使用することに注意してください。その使用法を有効にするには、XPathプロセッサのコンテキストでその名前空間プレフィックスを宣言する必要があります。XPathを呼び出す方法のコンテキストは示していませんが、それを示した場合は、その部分が正しく行われていることを確認するのに役立つはずです。

また、「条件付き書式設定」について何度か言及していますが、詳細が不十分で、何もできません。今のところ重要ではないものとして扱っていますが、重要な場合は、回答を編集して例を投稿してください。サポートさせていただきます。

于 2012-09-21T04:43:41.233 に答える