0

我尝试使用Record Count functoid 将本身出现 0 的记录的子记录数映射到无界到一条消息,其中每条记录都包含一个包含子记录数的字段:

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

但是,我当前的地图汇总了所有bar记录的计数并在每个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 回答