我是XSLT新手,目前正在使用xslt将输入XML上的递归函数转换为目标XML。使用XSLT递归
- 输入XML:
<?xml version="1.0" encoding="UTF-8"?>
<referenced>
<name>XYZ</name>
<LOCK_STATUS>2</LOCK_STATUS>
<reference>
<name>MC</name>
<LOCK_STATUS>2</LOCK_STATUS>
</reference>
<reference>
<name>MC1</name>
<LOCK_STATUS>2</LOCK_STATUS>
</reference>
<reference>
<name>List</name>
<LOCK_STATUS>2</LOCK_STATUS>
<reference>
<name>entList</name>
<LOCK_STATUS>2</LOCK_STATUS>
</reference>
<reference>
<name>ist</name>
<LOCK_STATUS>2</LOCK_STATUS>
</reference>
<reference>
<name>WumentList</name>
<LOCK_STATUS>2</LOCK_STATUS>
<reference>
<name>WumentList</name>
<LOCK_STATUS>2</LOCK_STATUS>
</reference>
<reference>
<name>WumentList</name>
<LOCK_STATUS>2</LOCK_STATUS>
</reference>
</reference>
</reference>
<reference>
<name>entList</name>
<LOCK_STATUS>2</LOCK_STATUS>
<reference>
<name>entList</name>
<LOCK_STATUS>2</LOCK_STATUS>
</reference>
<reference>
<name>ist</name>
<LOCK_STATUS>2</LOCK_STATUS>
</reference>
<reference>
<name>WumentList</name>
<LOCK_STATUS>2</LOCK_STATUS>
</reference>
</reference>
</referenced>
- 目标XML我想要实现:
- XSLT我写的函数:
<?xml version="1.0" encoding="UTF-8"?>
<children>
<name>XYZ</name>
<LOCK_STATUS>2</LOCK_STATUS>
<children>
<name>MC</name>
<LOCK_STATUS>2</LOCK_STATUS>
</children>
<children>
<name>MC1</name>
<LOCK_STATUS>2</LOCK_STATUS>
</children>
<children>
<name>DocumentList</name>
<LOCK_STATUS>2</LOCK_STATUS>
<children>
<name>entList</name>
<LOCK_STATUS>2</LOCK_STATUS>
</children>
<children>
<name>ist</name>
<LOCK_STATUS>2</LOCK_STATUS>
</children>
<children>
<name>WumentList</name>
<LOCK_STATUS>2</LOCK_STATUS>
<children>
<name>WumentList</name>
<LOCK_STATUS>2</LOCK_STATUS>
</children>
<children>
<name>WumentList</name>
<LOCK_STATUS>2</LOCK_STATUS>
</children>
</children>
</children>
<children>
<name>st</name>
<LOCK_STATUS>2</LOCK_STATUS>
<children>
<name>entList</name>
<LOCK_STATUS>2</LOCK_STATUS>
</children>
<children>
<name>ist</name>
<LOCK_STATUS>2</LOCK_STATUS>
</children>
<children>
<name>WumentList</name>
<LOCK_STATUS>2</LOCK_STATUS>
</children>
</children>
</children>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" encoding="utf-8"/>
<xsl:template match="/">
<xsl:apply-templates select="reference"/>
</xsl:template>
<xsl:template match="reference[reference]">
<xsl:apply-templates select="reference"/>
</xsl:template>
<xsl:template match="reference">
<children>
<name>
<xsl:value-of select="name" />
</name>
<LOCK_STATUS>
<xsl:value-of select="LOCK_STATUS" />
</LOCK_STATUS>
</children>
</xsl:template>
</xsl:stylesheet>
不知何故,我无法用我写的xslt实现目标XML。
Hi Tim,
感谢您对此的帮助。试图了解你提供的代码spinet和教程我去互联网了解更多:)
不在我的情况下,我不必重命名引用引用。
将如何XSLT变化,如果预期输出XML应该出现这样的你是你的根元素被命名为referenced
,但在你的第一个模板是寻找一个根元素
<?xml version="1.0" encoding="UTF-8"?>
<nodeInfo>
<name>XYZ</name>
<LOCK_STATUS>2</LOCK_STATUS>
<children>
<name>MC</name>
<LOCK_STATUS>2</LOCK_STATUS>
</children>
<children>
<name>MC1</name>
<LOCK_STATUS>2</LOCK_STATUS>
</children>
<children>
<name>DocumentList</name>
<LOCK_STATUS>2</LOCK_STATUS>
<children>
<name>entList</name>
<LOCK_STATUS>2</LOCK_STATUS>
</children>
<children>
<name>ist</name>
<LOCK_STATUS>2</LOCK_STATUS>
</children>
<children>
<name>WumentList</name>
<LOCK_STATUS>2</LOCK_STATUS>
<children>
<name>WumentList</name>
<LOCK_STATUS>2</LOCK_STATUS>
</children>
<children>
<name>WumentList</name>
<LOCK_STATUS>2</LOCK_STATUS>
</children>
</children>
</children>
<children>
<name>st</name>
<LOCK_STATUS>2</LOCK_STATUS>
<children>
<name>entList</name>
<LOCK_STATUS>2</LOCK_STATUS>
</children>
<children>
<name>ist</name>
<LOCK_STATUS>2</LOCK_STATUS>
</children>
<children>
<name>WumentList</name>
<LOCK_STATUS>2</LOCK_STATUS>
</children>
</children>
</nodeInfo>
我已经修改了我的答案,但是如果您没有为您的问题添加第二个输入XML,而是将原始输入XML修改为您想要的内容,将会很清楚。谢谢! –