سؤال

هل هناك طريقة لتحقيق التحول التالي في BT Mapper؟ إذا لم يكن كذلك ، أي فكرة ذكية؟

<Person>
<Age>25</Age>
<Name>Paul</Name>
</Person>

إلى:

<Person>
<CustomProperties>
<CustomProperty>
<Name>Age</Name>
<Value>25</VAlue>
</CustomProperty>
<CustomProperty>
<Name>Name</Name>
<Value>Paul</VAlue>
</CustomProperty>
</CustomProperties>

لا بد لي من تجميع بعض العناصر في قائمة العقد.

شكرا مقدما.

هل كانت مفيدة؟

المحلول

لا أعرف الكثير عن BizTalk Mapper ، لكن XSLT المطلوبة سيكون مستقيمًا إلى حد ما:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="Person">
    <xsl:copy>
      <CustomProperties>
        <xsl:apply-templates select="*" />
      </CustomProperties>
    </xsl:copy>
  </xsl:template>

  <xsl:template match="Person/*">
    <CustomProperty>
      <Name><xsl:value-of select="name()" /></Name>
      <Value><xsl:value-of select="." /></Value>
    </CustomProperty>
  </xsl:template>
</xsl:stylesheet>

نصائح أخرى

يمكنك أيضًا استخدام functoids tableLooping / TableExtractor في خريطتك لبناء العقد الوجهة.

انظر هذا المنشور للحصول على مثال:

http://hestia.typepad.com/flatlander/2007/01/mapping_fixed_e.html

يبدو أن لديك رسم خرائط مباشرة للأمام من المدخلات إلى الإخراج. عند القيام بالرسم الخاص بك ، انقر بزر الماوس الأيمن على الخط المرسوم من الإدخال إلى الإخراج. حدد "الخصائص". هناك خيارات إما لنسخ قيمة عقدة الإدخال أو اسم عقدة الإدخال. يمكنك استخدام اثنين من التعيينات من كل عقدة طفل ، واحدة لاستخراج الاسم وواحد للقيمة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top