记录计数 functoid 返回非平展目标消息的聚合计数

发布于 2024-12-10 17:10:37 字数 1491 浏览 0 评论 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>

I tried to use the Record Count functoid to map the number of sub-records of an record that itself occurs 0 to unbounded to a message with each record containing a field holding the number of sub-records:

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

However my current map aggregates the count of all bar records and returns it in every foo\barcount.

Sample source message

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

... and the result is

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

... whereas I expected

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

苍白女子 2024-12-17 17:10:37

我通过将记录计数 functoid 替换为调用 XSLT 模板脚本 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 的输入是来自 fooId 字段。

I solved this issue by replacing the Record Count functoid with a Call XSLT Template Scripting functoid.

The XSLT template looks like this:

<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>

and the input to the scripting functoid is the Id field from foo.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文