尝试将XML转换为HTML表

时间:2018-09-03 14:18:18

标签: xml xslt

我对XML不太熟悉(并且从未使用过XSL工作表),但是受命使用XML将输出传输到网页。我已经阅读了这里提出的几个XML到HTML的问题以及有关W3S的教程,并且对XSL样式表有所了解。

基本上,我希望最终的HTML打印出两个表,一个表显示各种Arena值,第二个表显示单个Flag值。

XML表:

<?xml version="1.0" encoding="utf-8"?>
<Stadium>
  <Arena>
    <Team>Team1</Team>
    <Field>Arena1</Field>
    <Score>100</Score>
  </Arena>
  <Arena>
    <Team>Team2</Team>
    <Field>Arena1</Field>
    <Score>100</Score>
  </Arena>
  <Arena>
    <Team>Team3</Team>
    <Field>Arena2</Field>
    <Score>100</Score>
  </Arena>
  <Flag>
    <Team>Team3</Team>
  </Flag>
</Stadium>

XSL工作表:

<?xml version="1.0"?>
  <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:template match="/">
    <html>
    <head>
    </head>

    <body>
        <table>
            <tr>
                <th>Team</th>
                <th>Field</th>
                <th>Score</th>
            </tr>

            <xsl:for-each select="Stadium/Arena">

                <tr>
                    <td><xsl:value-of select="Team" /></td>
                    <td><xsl:value-of select="Field" /></td>
                    <td><xsl:value-of select="Score" /></td>
                </tr>

            </xsl:for-each>
        </table>

        <table>
            <tr>
                <th>Team</th>
            </tr>

            <xsl:for-each select="Stadium/Flag">

                <tr>
                    <td><xsl:value-of select="Team" /></td>
                </tr>
            </xsl:for-each>
        </table>
    </body>
  </html>
  </xsl:template>
</xsl:stylesheet>

这是我当前的输出:

Team Stadium Points Team /* Google Docs Dark UI by UGoBoom */ /* Version 1.0 */ /* Published Oct 26 2015 */ /* Aesthetic inspired by Vertex-gtk theme */ @namespace url(http://www.w3.org/1999/xhtml);

很明显,XSL没有与XML正确通信。谁能解释我还需要做什么以使用XSL样式表打印出适当的表格?

1 个答案:

答案 0 :(得分:1)

总结 @TimC 的注释,您可以简单地添加

k['mnemonic']

命名为<?xml-stylesheet type="text/xsl" href="your.xslt" ?> 文件的.xml文件。
然后,在您的XSLT文件中,应添加

your.xslt

在您的<xsl:output method="html" indent="yes" html-version="5" /> 元素之后。

然后,如果在浏览器中打开XML文件,则应该获得所需的表(并可以改善其布局)。请注意,两个文件都在同一目录中。