1

我正在尝试制作一种“开关”的条件语句,因此取决于typeXML 文件中属性的值 - 我在 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>

这就是我得到的->

![Not correct.][1]
------------------------------------

这就是我希望它看起来的样子->

![Correct.][2]
------------------------------------

我想我没有正确订购条件语句,但我真的不知道如何。那么,任何想法如何解决这个问题?

4

1 回答 1

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>

您的方法的问题是您只需为每个父母生成一个 <img> 。

如果你愿意,你也可以使用这个

<?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>
于 2013-08-21T09:42:40.230 回答