需要从平面文件构建层次结构并建立父子关系

时间:2020-02-18 06:51:41

标签: xslt xslt-1.0 xslt-2.0 xslt-grouping

我正在尝试从平面文件开发层次结构,因此我需要在所需的输出中建立父子关系。您能否在XSLT 2.0中建议一种方法。

请在下面找到包含LEVEL和NAME标记的输入XML,在此基础上我试图建立父子关系。

只需添加更多信息,所有带有'I'的NAME标签都应放在单独的标签中,例如LOCATION,而所有带有'L'的NAME标签应放在单独的标签中,例如输出中的ADDRESS。

输入XML:

<Path>
<item>
<LEVEL>1</LEVEL>
<RANK>340</RANK>
<TYPE>T</TYPE>
<DESC>Sheet</DESC>
<NAME>I</NAME>
</item>
<item>
<LEVEL>2</LEVEL>
<RANK/>
<TYPE>M</TYPE>
<DESC>Handler</DESC>
<NAME>D</NAME>
</item>
<item>
<LEVEL>2</LEVEL>
<RANK>341</RANK>
<TYPE>M</TYPE>
<DESC>Sheet</DESC>
<NAME>I</NAME>
</item>
<item>
<LEVEL>3</LEVEL>
<RANK/>
<TYPE>M</TYPE>
<DESC>PDF</DESC>
<NAME>D</NAME>
</item>
<item>
<LEVEL>3</LEVEL>
<RANK>330</RANK>
<TYPE>M</TYPE>
 <DESC>SER </DESC>
<NAME>L</NAME>
</item>
<item>
<LEVEL>3</LEVEL>
<RANK>331</RANK>
<TYPE>M</TYPE>
<DESC>SEN</DESC>
<NAME>L</NAME>
</item>
<item>
<LEVEL>2</LEVEL>
<RANK>342</RANK>
<TYPE>M</TYPE>
 <DESC>xyz</DESC>
<NAME>I</NAME>
</item>
<item>
<LEVEL>3</LEVEL>
<RANK>335</RANK>
<TYPE>M</TYPE>
<DESC>FIL</DESC>
<NAME>L</NAME>
</item>
<item>
<LEVEL>2</LEVEL>
<RANK>343</RANK>
<TYPE>M</TYPE>
<DESC>safety </DESC>
<NAME>I</NAME>
</item>
<item>
<LEVEL>3</LEVEL>
<RANK/>
<TYPE>M</TYPE>
<DESC>doc</DESC>
<NAME>D</NAME>
</item>
<item>
<LEVEL>3</LEVEL>
<RANK>337</RANK>
<TYPE>M</TYPE>
 <DESC>ROD </DESC>
<NAME>L</NAME>
</item>
<item>
<LEVEL>3</LEVEL>
<RANK>338</RANK>
<TYPE>M</TYPE>
<DESC>CYL</DESC>
<NAME>L</NAME>
</item>
<item>
<LEVEL>3</LEVEL>
<RANK>339</RANK>
<TYPE>M</TYPE>
<DESC>COMP</DESC>
<NAME>L</NAME>
</item>
<item>
<LEVEL>2</LEVEL>
<RANK>345</RANK>
<TYPE>M</TYPE>
<DESC>Nyl</DESC>
<NAME>I</NAME>
</item>
</Path>

所需的输出:

<Path>

        <LOCATION>
            <LEVEL>1</LEVEL>
            <RANK>340</RANK>
            <TYPE>T</TYPE>
            <DESC>Sheet</DESC>
            <NAME>I</NAME>
        </LOCATION>
                <LOCATION>
                <LEVEL>2</LEVEL>
                <RANK/>
                <TYPE>M</TYPE>
                <DESC> Handler</DESC>
                <NAME>D</NAME>
                </LOCATION>
                <LOCATION>
                <LEVEL>2</LEVEL>
                <RANK>341</RANK>
                <TYPE>M</TYPE>
                <DESC> handler </DESC>
                <NAME>I</NAME>
                </LOCATION>
                    <ADDRESS>
                        <LEVEL>3</LEVEL>
                        <RANK/>
                        <TYPE>M</TYPE>
                        <DESC>pdf</DESC>
                        <NAME>D</NAME>
                    </ADDRESS>
                    <ADDRESS>
                        <LEVEL>3</LEVEL>
                        <RANK>330</RANK>
                        <TYPE>M</TYPE>
                        <DESC>pqr</DESC>
                        <NAME>L</NAME>
                    </ADDRESS>
                    <ADDRESS>
                        <LEVEL>3</LEVEL>
                        <RANK>331</RANK>
                        <TYPE>M</TYPE>
                         <DESC>SENSOR</DESC>
                        <NAME>L</NAME>
                    </ADDRESS>
                <LOCATION>
                    <LEVEL>2</LEVEL>
                    <RANK>342</RANK>
                    <TYPE>M</TYPE>
                     <DESC>xyz</DESC>
                    <NAME>I</NAME>
                </LOCATION>
                    <ADDRESS>
                        <LEVEL>3</LEVEL>
                        <RANK>335</RANK>
                        <TYPE>M</TYPE>
                        <DESC>TER</DESC>
                        <NAME>L</NAME>
                    </ADDRESS>
                <LOCATION>
                    <LEVEL>2</LEVEL>
                    <RANK>343</RANK>
                    <TYPE>M</TYPE>
                    <DESC>SAFE</DESC>
                    <NAME>I</NAME>
                </LOCATION>
                    <ADDRESS>>
                        <LEVEL>3</LEVEL>
                        <RANK/>
                        <TYPE>M</TYPE>
                        <DESC>doc</DESC>
                        <NAME>D</NAME>
                    </ADDRESS>>
                    <ADDRESS>>
                        <LEVEL>3</LEVEL>
                        <RANK>337</RANK>
                        <TYPE>M</TYPE>
                         <DESC>RST/DESC>
                        <NAME>L</NAME>
                    </ADDRESS>>
                    <ADDRESS>>
                        <LEVEL>3</LEVEL>
                        <RANK>338</RANK>
                        <TYPE>M</TYPE>
                          <DESC>CYL</DESC>
                        <NAME>L</NAME>
                    </ADDRESS>>
                    <ADDRESS>>
                        <LEVEL>3</LEVEL>
                        <RANK>339</RANK>
                        <TYPE>M</TYPE>
                        <DESC>COMP</DESC>
                        <NAME>L</NAME>
                    </ADDRESS>>
                <LOCATION>
                    <LEVEL>2</LEVEL>
                    <RANK>345</RANK>
                    <TYPE>M</TYPE>
                    <DESC>Nyl</DESC>
                    <NAME>I</NAME>
                </LOCATION>

</Path>

0 个答案:

没有答案
相关问题