XSLT联盟的两个输入xml文件

时间:2015-04-18 20:30:06

标签: xslt xslt-1.0 osb

我想合并两个xml文档。

  1. $ input(Doc A)包含所有可能的元素。
  2. 主要来源(文件B)可能包含也可能不包含所有要素
  3. Doc B包含可重复的元素。
  4. O / P应该是两个文件的联合。
  5. $ input(简化)

    <StudentData>
        <Header>
            <Info></Info>
        </Header>
        <Source>
            <Sinfo></Sinfo>
        </Source>
        <Student>
            <Fname></Fname>
            <Mname></Mname>
            <Lname></Lname>
            <age></age>
            <email></email>
            <subject>                       <!-- Repeatable -->
                <name></name>
                <avg_marks></avg_marks>
            </subject>
            <Hobby>                         <!-- Repeatable -->
                <name></name>
                <desc></desc>
            </Hobby>
        </Student>
    </StudentData>
    

    示例来源(文件B)

    <StudentData>
        <Header>
            <Info>This gives basic information</Info>
        </Header>
        <Student>
            <Fname>Walter</Fname>
            <Lname>White</Lname>
            <age>56</age>
            <email>whwhite@xyz.com</email>
            <subject>
                <name>MATHS</name>
                <avg_marks>80</avg_marks>
            </subject>
            <subject>
                <name>CHEMISTRY</name>
                <avg_marks>100</avg_marks>
            </subject>
            <subject>
                <name>PHYSICS</name>
                <avg_marks>78</avg_marks>
            </subject>
            <Hobby>
                <name>Reading</name>
            </Hobby>
            <Hobby>
                <name>SOCCER</name>
            </Hobby>
        </Student>
    </StudentData>
    

    O / P

    <StudentData>
        <Header>
            <Info>This gives basic information</Info>
        </Header>
        <Source>                           <!-- Added as empty tags as it is not present in Source -->
            <Sinfo></Sinfo>
        </Source>
        <Student>
            <Fname>Walter</Fname>
            <Mname></Mname>
            <Lname>White</Lname>
            <age>56</age>
            <email>whwhite@xyz.com</email>
            <subject>
                <name>MATHS</name>
                <avg_marks>80</avg_marks>
            </subject>
            <subject>
                <name>CHEMISTRY</name>
                <avg_marks>100</avg_marks>
            </subject>
            <subject>
                <name>PHYSICS</name>
                <avg_marks>78</avg_marks>
            </subject>
            <Hobby>
                <name>Reading</name>
                <desc></desc>
            </Hobby>
            <Hobby>
                <name>SOCCER</name>
                <desc></desc>
            </Hobby>
        </Student>
    </StudentData>
    
      

    如果源(doc B)不包含该元素,则o / p应包含空标记。

    • 澄清

    我正在使用Oracle Service Bus。来源(doc b)将可直接访问。可以使用$ input访问文档A.

    例如,学生Fname可以通过以下方式访问: $input/StudentData/Student/Fname

    有没有简单的方法可以做到这一点?提前谢谢。

0 个答案:

没有答案