我正在使用SLT,以回收一些XML,然后对产出适用一些超文本。 它将收回数据,但它重复了上级项目说明,我不清楚为什么? 我相信,这在我面前是正确的,但我看不到。 在XML的下一个层次上插入<ul>
tag。
XML 例:
<root>
<filters>
<filter ID="My Test">
<item id="1">
<description>MyTest Descrip</description>
<item id="1">
<description>Sub Level - 1</description>
</item>
<item id="2">
<description>Sub Level - 2</description>
</item>
<item id="3">
<description>Sub Level - 3</description>
<item id="4">
<description>Sub Level 2 - 1</description>
</item>
<item id="5">
<description>Sub Level 2 - 2</description>
</item>
</item>
</item>
</filter>
</filters>
</root>
XSLT 例:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="filter">
<xsl:variable name="dataID" select="@ID"/>
<ul class="searchdata">
<xsl:apply-templates select="item"/>
</ul>
</xsl:template>
<xsl:template match="item">
<li>
<xsl:variable name="searchID" select="@id"/>
<input id="{$searchID}" type="checkbox"/>
<label for="{$searchID}">
<xsl:value-of select="description"/>
</label>
<xsl:if test="item">
<ul>
<xsl:apply-templates />
</ul>
</xsl:if>
</li>
</xsl:template>
</xsl:stylesheet>
传真:
<?xml version="1.0" encoding="utf-8"?>
<ul class="searchdata"><li><input id="1" type="checkbox" /><label for="1">MyTest Descrip</label><ul>
MyTest Descrip
<li><input id="1" type="checkbox" /><label for="1">Sub Level - 1</label></li>
<li><input id="2" type="checkbox" /><label for="2">Sub Level - 2</label></li>
<li><input id="3" type="checkbox" /><label for="3">Sub Level - 3</label><ul>
Sub Level - 3
<li><input id="4" type="checkbox" /><label for="4">Sub Level 2 - 1</label></li>
<li><input id="5" type="checkbox" /><label for="5">Sub Level 2 - 2</label></li>
</ul></li>
</ul></li></ul>
任何建议都将受到高度赞赏。
感谢。