我正在尝试创建一种“switch”的条件语句,因此根据XML文件中type
属性的值 - 我在HTML中放了一个图标,然后我添加了文本。但如果不能完全运作......或者不完全符合我的要求。
XML:
<?xml version="1.0" encoding="utf-8"?>
<TreeView>
<Parent text="Installation">
<child text="Startup" type="video" file="startup.wmv" icon="c://user/desktop/blahblah.jpg"/>
<child text="Getting there" type="video" file="gettingthere.wmv" icontPath="something"/>
<child text="Steps" type="document" file="steps.docx" icon="asd"/>
<child text="Pictures" type="presentation" file="pics.jpg" icon="dasdasdas"/>
</Parent>
<Parent text="Usage">
<child text="Tilbud pane" type="video" file="tilbud.mwv" icon="asdasd"/>
<child text="Report pane" type="document" file="report.docx" icon="gfdhd"/>
</Parent>
</TreeView>
XSLT:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="utf-8"/>
<xsl:template match="/">
<ul id="LinkedList1" class="LinkedList">
<xsl:apply-templates/>
</ul>
</xsl:template>
<xsl:template match="Parent">
<li>
<xsl:value-of select="@text"/>
<br/>
<ul>
<xsl:choose>
<xsl:when test="child/@type = 'video'">
<img src="play_icon.png" alt="play_video_icon" title="Video tutorial" />
</xsl:when>
<xsl:when test="child/@type = 'document'">
<img src="word_icon.png" alt="text_document_icon" title="Text Document" />
</xsl:when>
<xsl:when test="child/@type = 'presentation'">
<img src="powerpoint_icon.png" alt="powerpoint_icon" title="Power Point presentation" />
</xsl:when>
</xsl:choose>
<xsl:apply-templates select="child"/>
</ul>
</li>
</xsl:template>
<xsl:template match="child">
<li><xsl:value-of select="@text"/></li>
</xsl:template>
</xsl:stylesheet>
这就是我得到的 - &gt;
![Not correct.][1]
------------------------------------
这就是我想要的样子 - &gt;
![Correct.][2]
------------------------------------
我想我没有正确地排序条件语句,但我真的不知道如何。那么,任何想法如何解决这个问题?
答案 0 :(得分:2)
试试这个
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="utf-8"/>
<xsl:template match="/">
<ul id="LinkedList1" class="LinkedList">
<xsl:apply-templates/>
</ul>
</xsl:template>
<xsl:template match="Parent">
<li>
<xsl:value-of select="@text"/>
<br/>
<ul>
<xsl:apply-templates select="child"/>
</ul>
</li>
</xsl:template>
<xsl:template match="child[@type='video']">
<li>
<img src="play_icon.png" alt="play_video_icon" title="Video tutorial" />
<xsl:value-of select="@text"/>
</li>
</xsl:template>
<xsl:template match="child[@type='document']">
<li>
<img src="word_icon.png" alt="text_document_icon" title="Text Document" />
<xsl:value-of select="@text"/>
</li>
</xsl:template>
<xsl:template match="child[@type='presentation']">
<li>
<img src="powerpoint_icon.png" alt="powerpoint_icon" title="Power Point presentation" />
<xsl:value-of select="@text"/>
</li>
</xsl:template>
</xsl:stylesheet>
您的方法存在的问题是您只需生成一个&lt; img&gt;为每个父母。
如果您愿意,也可以使用此
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="utf-8"/>
<xsl:template match="/">
<ul id="LinkedList1" class="LinkedList">
<xsl:apply-templates/>
</ul>
</xsl:template>
<xsl:template match="Parent">
<li>
<xsl:value-of select="@text"/>
<br/>
<ul>
<xsl:apply-templates select="child"/>
</ul>
</li>
</xsl:template>
<xsl:template match="child">
<li>
<xsl:choose>
<xsl:when test="@type = 'video'">
<img src="play_icon.png" alt="play_video_icon" title="Video tutorial" />
</xsl:when>
<xsl:when test="@type = 'document'">
<img src="word_icon.png" alt="text_document_icon" title="Text Document" />
</xsl:when>
<xsl:when test="@type = 'presentation'">
<img src="powerpoint_icon.png" alt="powerpoint_icon" title="Power Point presentation" />
</xsl:when>
</xsl:choose>
<xsl:value-of select="@text"/>
</li>
</xsl:template>
</xsl:stylesheet>