我正在尝试从平面文件开发层次结构,因此我需要在所需的输出中建立父子关系。您能否在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>