2011-10-27 14 views
6

स्रोत इनपुटXSLT परिवर्तन - गतिशील तत्व नाम

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

अपेक्षित परिणाम:

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

मूल रूप से फील्ड तत्व का नाम विशेषता के मान रही है और एक नए तत्व का निर्माण और उसके बाद का मूल्य प्राप्त " मान "विशेषता और इसे नए तत्व के मूल्य के रूप में उपयोग करना।

+0

' 'कहां से आता है? साथ ही, आपके इनपुट में आपका 'फ़ील्ड' तत्व अच्छी तरह से गठित नहीं है। एक अच्छे पहले प्रश्न के लिए –

+0

+1। –

उत्तर

13

यह XSL स्टाइल शीट:

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

एप्लाइड अच्छी तरह से गठित करने के लिए इनपुट:

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

का उत्पादन:

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

मैं कहाँ <PONumber> से उत्पन्न किया जा माना जाता है यकीन नहीं है।

+0

समाधान एक आकर्षण की तरह काम किया। खिड़की में पेस्ट कॉपी करने की कोशिश करते समय मैंने स्रोत और लक्ष्य इनपुट को गड़बड़ कर दिया ... इसके लिए आपको धन्यवाद नहीं दे सकता ... – Neel

0

इन पंक्तियों के साथ कुछ, अगर मैं आप सही ढंग से समझ:

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