2011-10-27 29 views
6

Nguồn InputXSLT Transformation - tên phần tử năng động

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

Kết quả dự kiến:

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

Về cơ bản nhận được giá trị của thuộc tính Name của nguyên tố Field và xây dựng một nguyên tố mới và sau đó nhận được giá trị của " Giá trị "thuộc tính và sử dụng nó làm giá trị của phần tử mới.

+0

Nơi nào ' 'đến từ đâu? Ngoài ra, phần tử 'Field' trong đầu vào của bạn không được định dạng đúng. –

+0

+1 để có câu hỏi hay. –

Trả lời

13

này kiểu 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> 

Ứng dụng cho tốt được hình thành đầu vào:

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

Tạo:

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

Tôi không chắc chắn nơi <PONumber> là nghĩa vụ phải được tạo ra từ.

+0

Giải pháp hoạt động như một sự quyến rũ. Tôi làm hỏng nguồn và mục tiêu đầu vào trong khi cố gắng sao chép dán trong cửa sổ ... không thể cảm ơn đủ cho điều này ... – Neel

0

cái gì đó dọc những dòng này, nếu tôi hiểu bạn một cách chính xác:

<xsl:element name="name()"> 
<xsl:value-of select="./text()" /> 
</xsl:element> 
Các vấn đề liên quan