在某些条件下进行XSLT 1.0转换

时间:2017-03-01 06:37:20

标签: xslt xslt-1.0

我有一个xml,它是几个子系统查询的合并输出。现在我必须选择很多信息。例如:

/合并/响应/ BenutzerDaten / Deaktiviert

如果/ Merge / response / results / result / dn以"结尾,o = test,c = de"并且只有一个结果以该模式结束:

/合并/响应/结果/结果/属性/ identnummer

如果/ Merge / response / results / result / dn以"结束,DC = TEST,DC = DE":

/合并/响应/结果/结果/属性/邮编

最好的办法是什么?

这是我的灵魂xml的简化样本:

0  11  22  33  33

0  11  22  33  33

0  11  22  33  33

0  11  22  33  33

0  11  22  33  33

预期结果应如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<Merge>
    <response>
        <results>
            <result>
                <dn>cn=user1,ou=members,ou=group1,o=test,c=de</dn>
                <attributes>
                    <identnummer>re3232</identnummer>
                    <uid>user1</uid>
                    [...]
                    <adminuid>admin3</adminuid>
                </attributes>
            </result>
        </results>
    </response>
    <response>
        <results>
            <result>
                <dn>CN=user1,OU=Users,DC=TEST,DC=DE</dn>
                <attributes>
                    <postalCode>12345</postalCode>
                    <company>My Company</company>
                    [...]
                    <streetAddress>XSLT Road 1</streetAddress>
                </attributes>
            </result>
        </results>
    </response>
    <response>
        <secDN>principalName=user1,cn=Users,secDomain=Default</secDN>
        <Benutzerdaten>
            <Deaktiviert>false</Deaktiviert>
            <Gesperrt>false</Gesperrt>
            [...]
            <PasswortGueltig>true</PasswortGueltig>
        </Benutzerdaten>
    </response>
    <Nutzdaten>
        <Identifikation>
            <AdminID>admin3</AdminID>
            <BenutzerID>user1</BenutzerID>
        </Identifikation>
        <Benutzerdaten>
            <Datentyp>Account-Daten</Datentyp>
            <Datentyp>Anwendungs-Daten</Datentyp>
            <Datentyp>Benutzer-Daten</Datentyp>
        </Benutzerdaten>
    </Nutzdaten>
</Merge>

这是我不成功的尝试:

<?xml version="1.0" encoding="UTF-8"?>
<UserData>
    <user>user1</user>
    <source1>
        <identnummer>re3232</identnummer>
    </source1>
    <source2>
        <postalCode>12345</postalCode>
    </source2>
    <source3>
        <Deaktiviert>false</Deaktiviert>
    </source3>
</UserData>

1 个答案:

答案 0 :(得分:0)

尝试以下方法:

Member