XSLT从通用模型转换为特定模型

时间:2017-07-01 19:18:39

标签: xslt-1.0 xslt-2.0

我正在尝试将使用通用模型发送到我的后端的XML表单转换为系统使用XSLT使用的内部XML模型。

通用模型由部分,行和表组成(表基本上是一个数组/元素组)。 PK来自tableRow的序列,maxPK是count。 MaxPK我可能会在之后填充,不确定是否可以通过XSLT。

任何帮助将不胜感激!

通用模型

    <form>
    <section>
        <name>identification</name>
        <sequence>1</sequence>
        <line>
            <sequence>0</sequence>
            <field>
                <name>firstName</name>
                <value>JOHN</value>
            </field>
        </line>
        <line>
            <sequence>1</sequence>
            <field>
                <name>lastName</name>
                <value>DOE</value>
            </field>
        </line>
    </section>
    <section>
        <name>contactDetails</name>
        <sequence>1</sequence>
        <line>
            <sequence>0</sequence>
            <field>
                <name>primaryPhone</name>
                <value>+44 100 1234</value>
            </field>
        </line>
        <table>
            <name>secondaryPhoneGroup</name>
            <tableRow>
                <sequence>1</sequence>
                <field>
                    <sequence>0</sequence>
                    <name>secondaryPhone</name>
                    <value>+44 100 1235</value>
                </field>
            </tableRow>
            <tableRow>
                <sequence>2</sequence>
                <field>
                    <sequence>0</sequence>
                    <name>secondaryPhone</name>
                    <value>+44 100 1236</value>
                </field>
            </tableRow>
        </table>
    </section>
</form>

内部模型

<form>
    <identification>
        <firstName>
            <asCurrent>JOHN</asCurrent>
        </firstName>
        <lastName>
            <asCurrent>DOE</asCurrent>
        </lastName>
    </identification>
    <contactDetails>
        <primaryPhone>
            <asCurrent>+44 100 1234</asCurrent>
        </primaryPhone>
        <secondaryPhoneGroup>
            <secondaryPhone>
                <pk>1</pk>
                <phone>
                    <asCurrent>+44 100 1235</asCurrent>
                </phone>
            </secondaryPhone>
            <secondaryPhone>
                <pk>2</pk>
                <phone>
                    <asCurrent>+44 100 1236</asCurrent>
                </phone>
            </secondaryPhone>
            <maxPK>2</maxPK>
        </secondaryPhoneGroup>
    </contactDetails>
</form>

1 个答案:

答案 0 :(得分:1)

尝试以下几行:

restart