2011-10-27 14 views
6

Kaynak GirdiXSLT Dönüşüm - dinamik öğe adları

<SiebelMessage MessageId="1-18J35" IntObjectName="XRX R5 Letter Instance" MessageType="Integration Object" IntObjectFormat="Siebel Hierarchical"> 
<LetterInstance Id="1-1RUYIF" Language="ENU" TemplateType="SA"> 
<Field Value="CO Last Name" Datatype="String" Name="ContractingOfficerLastName"> 
</LetterInstance> 
</SiebelMessage> 

Beklenen Sonuç:

<?xml version="1.0" encoding="UTF-8"?> 
<SiebelMessage MessageId="1-18J35" IntObjectName="XRX R5 Letter Instance" MessageType="Integration Object" IntObjectFormat="Siebel Hierarchical"> 
<LetterInstance Id="1-1RUYIF" Language="ENU" TemplateType="SA"> 
<ContractingOfficerLastName>CO Last Name</ContractingOfficerLastName> 
<PONumber>POTest000001</PONumber> 
</LetterInstance> 
</SiebelMessage> 

Temelde Saha elemanın adı özelliğinin değerini alma ve "değerini almak sonra yeni bir öğe oluşturmak ve Değer "özniteliği ve onu yeni öğenin değeri olarak kullanma. Bu doğrultuda

+0

'nerededir? Ayrıca, girdinizdeki "Alan" öğeniz iyi oluşturulmamış. İlk iyi bir soru için –

+0

+1. –

cevap

13

Bu XSL Stil:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output indent="yes"/> 
    <xsl:strip-space elements="*"/> 

    <xsl:template match="node()|@*"> 
    <xsl:copy> 
     <xsl:apply-templates select="node()|@*"/> 
    </xsl:copy> 
    </xsl:template> 

    <xsl:template match="Field"> 
    <xsl:element name="{@Name}"> 
     <xsl:value-of select="@Value"/> 
    </xsl:element> 
    </xsl:template> 

</xsl:stylesheet> 

Uygulamalı iyi biçimlenmiş giriş:

<SiebelMessage MessageId="1-18J35" IntObjectName="XRX R5 Letter Instance" MessageType="Integration Object" IntObjectFormat="Siebel Hierarchical"> 
    <LetterInstance Id="1-1RUYIF" Language="ENU" TemplateType="SA"> 
    <Field Value="CO Last Name" Datatype="String" Name="ContractingOfficerLastName"/> 
    </LetterInstance> 
</SiebelMessage> 

üretir: <PONumber> oluşturulan olması gerekiyordu nerede emin değilim

<SiebelMessage MessageId="1-18J35" IntObjectName="XRX R5 Letter Instance" MessageType="Integration Object" IntObjectFormat="Siebel Hierarchical"> 
    <LetterInstance Id="1-1RUYIF" Language="ENU" TemplateType="SA"> 
     <ContractingOfficerLastName>CO Last Name</ContractingOfficerLastName> 
    </LetterInstance> 
</SiebelMessage> 

.

+0

Çözüm, bir çekicilik gibi çalıştı. Pencerede yapıştırma işlemini yapmaya çalışırken kaynağı ve hedef girişi karıştırdım ... bunun için yeterince teşekkür edemem ... – Neel

0

şey, seni doğru anladıysam eğer:

<xsl:element name="name()"> 
<xsl:value-of select="./text()" /> 
</xsl:element>