2

マップする必要がある次の xml ファイルがあるとします。

ソース

<Persons>
    <Person>
        <Id>2</Id>
        <ParentId>3</ParentId>
        <Name>Some dude</Name>
    </Person>
    <Person>
        <Id>3</Id>
        <ParentId></ParentId>
        <Name>Some dude2</Name>
    </Person>
</Persons>

行き先

<Persons>
    <Person>
        <Name>Some dude</Name>
        <Parent>
            <Name>Some dude2</Name>
        </Parent>
    </Person>
</Persons>

では、biztalk マップで、右の親と人物をどのように対応付ければよいでしょうか。

ありがとう

4

1 に答える 1

1

BizTalk BTM マップを視覚的なクモの巣の代わりにxslt を直接使用するように変更し、次の xslt を適用する場合 (明らかに、BizTalk には通常、名前空間も必要です)。

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" indent="yes"/>
    <xsl:template match="Persons">
        <Persons>
            <xsl:apply-templates select="Person[normalize-space(ParentId/text()) != '']" />
        </Persons>
    </xsl:template>

    <xsl:template match="Person">
        <Person>
            <Name>
                <xsl:value-of select="Name/text()"/>
            </Name>
            <Parent>
                <Name>
                    <xsl:variable name="parentId" select="ParentId/text()" />
                    <xsl:value-of select="/Persons/Person[Id=$parentId]/Name/text()" />
                </Name>
            </Parent>
        </Person>
    </xsl:template>
</xsl:stylesheet>

親を持たない人物も含めたい場合は、最初のものを次のように変更apply-templatesします。

<xsl:apply-templates select="Person" />
于 2012-09-17T14:24:46.697 に答える