Altova Mapforce中的映射问题

时间:2015-05-18 14:22:11

标签: xslt-1.0 altova map-force

我试图实现一种情况,即即使输入中没有元素,我仍然可以在输出中获得元素。

例如:如果我的输入是

<?xml version="1.0" encoding="UTF-8"?>
<getMyClsScheduleResponse>
    <RegisteredClass>
        <ClassNumber>30788</ClassNumber>
    </RegisteredClass>
    <RegisteredClass>
        <ClassNumber>30524</ClassNumber>
        <Instructor>
            <InstructorName>Bernstein,Dennis S</InstructorName>
            <LastName>Bernstein</LastName>
            <FirstName>Dennis</FirstName>
            <Uniqname>DSBAERO</Uniqname>
            <InstructorRole>Primary Instructor</InstructorRole>
        </Instructor>
    </RegisteredClass>
    <RegisteredClass>
        <ClassNumber>11786</ClassNumber>
        <Instructor>
            <InstructorName>Gluskich,Kari E</InstructorName>
            <LastName>Gluskich</LastName>
            <FirstName>Kari</FirstName>
            <Uniqname>KARI</Uniqname>
            <InstructorRole>Secondary Instructor</InstructorRole>
        </Instructor>
        <Instructor>
            <InstructorName>Grocech,Marian Renee</InstructorName>
            <LastName>Grocech</LastName>
            <FirstName>Marian</FirstName>
            <Uniqname>MARIANGR</Uniqname>
            <InstructorRole>Primary Instructor</InstructorRole>
        </Instructor>
    </RegisteredClass>
</getMyClsScheduleResponse>

我期待输出

<?xml version="1.0" encoding="UTF-8"?>
<getMyClsScheduleResponse>
    <RegisteredClasses>
        <Title>30788</Title>
        <Instructor/>
    </RegisteredClasses>
    <RegisteredClasses>
        <Title>30524</Title>
        <Instructor>
            <Name>Bernstein,Dennis S</Name>
            <Role>Primary Instructor</Role>
            <Email>DSBAERO</Email>
        </Instructor>
    </RegisteredClasses>
    <RegisteredClasses>
        <Title>11786</Title>
        <Instructor>
            <Name>Gluskich,Kari E</Name>
            <Role>Secondary Instructor</Role>
            <Email>KARI</Email>
        </Instructor>
        <Instructor>
            <Name>Grocech,Marian Renee</Name>
            <Role>Primary Instructor</Role>
            <Email>MARIANGR</Email>
        </Instructor>
    </RegisteredClasses>
</getMyClsScheduleResponse>

我试图使用altova mapforce实现这一目标。我已经使用了存在且不存在的函数,但它并没有给我带来有利的结果。

请参阅映射 Mapping using exists function

但结果并不像预期的那样。

<?xml version="1.0" encoding="UTF-8"?>
<getMyClsScheduleResponse >
    <RegisteredClasses>
        <Title>30788</Title>
        <Instructor/>
    </RegisteredClasses>
    <RegisteredClasses>
        <Title>30524</Title>
        <Instructor>
            <Name>Bernstein,Dennis S</Name>
            <Role>Primary Instructor</Role>
            <Email>DSBAERO</Email>
        </Instructor>
    </RegisteredClasses>
    <RegisteredClasses>
        <Title>11786</Title>
        <Instructor>
            <Name>Gluskich,Kari E</Name>
            <Name>Grocech,Marian Renee</Name>
            <Role>Secondary Instructor</Role>
            <Role>Primary Instructor</Role>
            <Email>KARI</Email>
            <Email>MARIANGR</Email>
        </Instructor>
    </RegisteredClasses>
</getMyClsScheduleResponse>

有人可以帮我解决这个问题吗?

由于 Kranthi

1 个答案:

答案 0 :(得分:0)

我发生了类似的事情。在我找到更好的方法之前,这里是一个用户定义函数,我在此期间使用它来强制输出一个空节点(如果输入值为空)。将节点输出连接到Instructor节点,并将代码输出连接到您的值。如果需要,可以用复杂类型替换代码输出。

example