2011-05-05 35 views
0

我输入的是一样的东西:映射到集合的结构在BizTalk 2009年

<Person> 
<FirstName>abc</FirstName> 
<Bsn>2345467</Bsn> 
<Person> 

输出应该是:

<Person> 
    <properties> 
    <property> 
     <propertyname> Firstname </propertyname> 
     <propertyValue> abc </propertyValue> 
    </property> 
    <property> 
     <propertyname> Bsn</propertyname> 
     <propertyValue> 2345467 </propertyValue> 
    </property> 
    </properties> 
</Person> 

我的意思是目标不具有特定属性/ atrributes。相反,它有一个属性集合,其中我指定属性的名称和属性的值。

任何帮助,高度赞赏。

我使用BizTalk 2009年

请帮

+0

我都试过了,循环和表functiod,但没有帮助。 ! – 2011-05-06 06:26:50

回答

1

我会使用自定义的XSLT在这种情况下─无论是通过使用scripting functiod或用自定义的XSLT文件替换整个地图(取决于如何休息你的地图看起来)。

该解决方案可能看起来像这样。

XML

<Persons> 
<Person> 
    <FirstName>abc</FirstName> 
    <Bsn>2345467</Bsn> 
</Person> 
</Persons> 

XSLT

<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" /> 
    </Persons> 
</xsl:template> 

<xsl:template match="Person"> 
    <Person> 
    <properties> 
    <xsl:apply-templates select="*" mode="properties" /> 
    </properties> 
    </Person> 
</xsl:template> 

<xsl:template match="node()" mode="properties"> 
    <property> 
    <propertyname> 
    <xsl:value-of select="local-name()"/> 
    </propertyname> 
    <propertyvalue> 
    <xsl:value-of select="."/> 
    </propertyvalue> 
</property> 
</xsl:template> 

</xsl:stylesheet> 

结果

<?xml version="1.0" encoding="utf-8"?> 
<Persons> 
    <Person> 
    <properties> 
    <property> 
    <propertyname>FirstName</propertyname> 
    <propertyvalue>abc</propertyvalue> 
    </property> 
    <property> 
    <propertyname>Bsn</propertyname> 
    <propertyvalue>2345467</propertyvalue> 
    </property> 
    </properties> 
    </Person> 
</Persons> 
+0

嗨Riri, 感谢您的回应!我可以用** Table循环functoid **解决上述问题。但是,当我有一个更棘手的目标模式时,出现了一个转折点。 现在的目标是这样的: [1]:http://i.imgur.com/8r5ec.png 指本BSN被映射到扩展属性的整数类型,而姓String类型的扩展属性。 我无法达到此目的! 任何想法? – 2011-05-09 07:47:12