【问题标题】:XSL XML to HTMLXSL XML 到 HTML
【发布时间】:2015-04-17 14:25:50
【问题描述】:

我有学校的作业,但我找不到办法让它变成应该的样子,所以如果有人帮助我,我将不胜感激。 这是我的xml代码

<cinemaSchedule>
<Date13.11.2014>

    <movies >
        <title>Dracula Untold </title>
        <gener>Horror</gener>
        <raiting>C</raiting>
        <language>EN</language>
        <runtime>92</runtime>
        <projection>17:50  19:45  21:50</projection>
    </movies>
    <movies id="wtf2">
        <title>The November Man </title>
        <gener>  Action </gener>
        <raiting>C</raiting>
        <language>EN</language>
        <runtime>108</runtime>
        <projection>22:00</projection>
    </movies>
</Date13.11.2014>

<Date14.11.2014>

    <movies id="wtf9">
        <title>Dracula Untold </title>
        <gener>Horror</gener>
        <raiting>C</raiting>
        <language>EN</language>
        <runtime>92</runtime>
        <projection> 13:50  15:45   17:40   19:40    22:20</projection>
    </movies>

    <movies id="wtf11">
        <title>Jessabelle</title>
        <gener>Horror</gener>
        <raiting>C</raiting>
        <language>EN</language>
        <runtime>90</runtime>
        <projection> 14:20      16:20       18:20     20:20 </projection>
    </movies>
</Date14.11.2014>
</cinemaSchedule>

这是我的 xsl 代码 .. 但它不能正常工作 .. 每个日期都应该是表格的标题 ..

<xsl:template name="table" >
<table>
    <tr>
        <th>Title</th>
        <th>Gener</th>
        <th>Raiting</th>
        <th>Language</th>
        <th>Runtime</th>
        <th>Projection Hours</th>
    </tr>
    <xsl:for-each select="cinemaSchedule//*">
        <tr>
            <td>
                <xsl:value-of select="title" />
            </td>
            <td>
                <xsl:value-of select="gener" />
            </td>
            <td>
                <xsl:value-of select="raiting" />
            </td>
            <td>
                <xsl:value-of select="language" />
            </td>
            <td>
                <xsl:value-of select="runtime" />
            </td>
            <td>
                <xsl:value-of select="projection" />
            </td>
        </tr>
    </xsl:for-each>
</table>
</xsl:template>

一切都应该是这样的...... exalpe:http://puu.sh/g08qy/f70e81bc2c.png 但对于电影院

【问题讨论】:

    标签: html xml xslt transformation


    【解决方案1】:

    我想我找到了解决您问题的方法。虽然如果日期是数据的一部分而不是作为独立节点会更容易。

    第 1 部分在这里,我在 node 下获取子节点并将它们传递给模板 “subnodes”。参数将具有 datenodes。

        <xsl:template match="/" >
    <table cellspacing="1" cellpadding="10" border="5">
    <tr>
            <th>Date</th>
            <th>Title</th>
            <th>Gener</th>
            <th>Raiting</th>
            <th>Language</th>
            <th>Runtime</th>
            <th>Projection Hours</th>
        </tr>
    
        <xsl:for-each select="cinemaSchedule/*">
    <tr> 
    <xsl:call-template name="subnodes">
      <xsl:with-param name="currentNode" select="."/>
    </xsl:call-template>
    </tr>
        </xsl:for-each>
    </table>
    </xsl:template>
    

    第 2 部分# 在“子节点”模板中,我遍历了 datenodes 并使用 name() 函数来获取 datenodes 的名称。

    <xsl:template name="subnodes">
    <xsl:param name="currentNode"/>
    <xsl:for-each select="$currentNode/*">
    <tr>
    <td>
    <xsl:value-of select="name($currentNode)"/>
    </td>
    <td>
    <xsl:value-of select="title"/>
    </td>
    <td>
    <xsl:value-of select="gener"/>
    </td>
    <td>
    <xsl:value-of select="raiting"/>
    </td>
    <td>
    <xsl:value-of select="language"/>
    </td>
    <td>
    <xsl:value-of select="runtime"/>
    </td>
    <td>
    <xsl:value-of select="projection"/>
    </td>
    </tr>
    </xsl:for-each>
    
    </xsl:template>
    </xsl:stylesheet>
    

    完整的 XSL 代码:

    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    
    <xsl:template match="/" >
    <table cellspacing="1" cellpadding="10" border="5">
    <tr>
            <th>Date</th>
            <th>Title</th>
            <th>Gener</th>
            <th>Raiting</th>
            <th>Language</th>
            <th>Runtime</th>
            <th>Projection Hours</th>
        </tr>
    
        <xsl:for-each select="cinemaSchedule/*">
    
    <tr> 
    <xsl:call-template name="subnodes">
      <xsl:with-param name="currentNode" select="."/>
    </xsl:call-template>
    </tr>
        </xsl:for-each>
    </table>
    </xsl:template>
    
    <xsl:template name="subnodes">
    <xsl:param name="currentNode"/>
    <xsl:for-each select="$currentNode/*">
    <tr>
    <td>
    <xsl:value-of select="name($currentNode)"/>
    </td>
    <td>
    <xsl:value-of select="title"/>
    </td>
    <td>
    <xsl:value-of select="gener"/>
    </td>
    <td>
    <xsl:value-of select="raiting"/>
    </td>
    <td>
    <xsl:value-of select="language"/>
    </td>
    <td>
    <xsl:value-of select="runtime"/>
    </td>
    <td>
    <xsl:value-of select="projection"/>
    </td>
    </tr>
    </xsl:for-each>
    
    </xsl:template>
    </xsl:stylesheet>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多