0

Record Count Functoidを使用して、それ自体が 0 から unbounded に発生するレコードのサブレコードの数をメッセージにマップしようとしました。各レコードには、サブレコードの数を保持するフィールドが含まれています。

root+                           +root
    |                           |
    +foo+                   +foo+
        |                   |
        +bar+ -RecordCount- barcount
            |
            +xyz

barただし、現在のマップはすべてのレコードの数を集計し、それを every で返しますfoo\barcount

サンプルソースメッセージ

<root>
    <foo>
        <Id>1</Id>
        <bar>
            <xyz />
        </bar>
        <bar>
            <xyz />
        </bar>
    </foo>
    <foo>
        <Id>2</Id>
        <bar>
            <xyz />
        </bar>
        <bar>
            <xyz />
        </bar>
    </foo>
</root>

...そして結果は

<root>
    <foo>
        <Id>1</Id>
        <barcount>4</barcount>
    </foo>
    <foo>
        <Id>2</Id>
        <barcount>4</barcount>
    </foo>
</root>

...予想していたのとは対照的に

<root>
    <foo>
        <Id>1</Id>
        <barcount>2</barcount>
    </foo>
    <foo>
        <Id>2</Id>
        <barcount>2</barcount>
    </foo>
</root>
4

1 に答える 1

0

Record Count Functoid をCall XSLT Template Scripting Functoidに置き換えることで、この問題を解決しました。

XSLT テンプレートは次のようになります。

<xsl:template name="CountMyBar">
    <xsl:param name="fooId" />
    <xsl:element name="barcount">
        <xsl:value-of select="count(//foo[Id=$fooId]/bar)" />
    </xsl:element>
</xsl:template>

スクリプト Functoid への入力は からのIdフィールドですfoo

于 2011-10-20T13:26:36.677 に答える