我是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修改爲您想要的內容,將會很清楚。謝謝! –