使用XSLT在HTML表中显示XML元素

时间:2011-11-24 19:45:13

标签: xml xslt

我是XML和XSLT的新手。我有一个xml文件(book.xml

我想用xsl转换创建HTMLtable并在该表中显示书籍的详细信息。这是我的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:template match="seite">
    <xsl:apply-templates select="document('book.xml')"/>
  </xsl:template>

  <xsl:template match="catalog">
    <html>
      <head>
        <title>
          <xsl:text>book</xsl:text>
        </title>
      </head>
      <body bgcolor="#ffffff">
        <h1>
          <xsl:text>Lieferungen</xsl:text>
        </h1>
        <hr/>
        <table border="1">
          <tr>
            <th>Nummer</th>
            <th>author</th>
            <th>titel</th>
            <th>genre</th>
          </tr>
          <xsl:apply-templates/>
        </table>

        <hr/>
        <p>
          <xsl:text>Mit Webfehler: Wie vermeidet man die falsch sortieren Spalten?</xsl:text>
        </p>
      </body>
    </html>
  </xsl:template>

  <xsl:template match="artikel">
    <tr>
      <td>
        <xsl:value-of select="@id"/>
      </td>
      <xsl:apply-templates/>
    </tr>
  </xsl:template>

  <xsl:template match="author|titel|genre">
    <td>
      <xsl:apply-templates/>
    </td>
  </xsl:template>
</xsl:stylesheet>

但我无法在浏览器中看到该表。我只看到XML文件。请问我该如何正确地做到这一点? 感谢'为你的帮助

2 个答案:

答案 0 :(得分:1)

您可能需要将xsl引用添加到.xml

<?xml-stylesheet type="text/xsl" href="myTransform.xsl"?>

其余的.xml跟随

否则你应该使用一个xslt处理器,它将根据你的.xml和.xsl创建你的html。

编辑:

对于visual studio,请访问:http://msdn.microsoft.com/en-us/library/aa302298.aspx

答案 1 :(得分:0)

  1. 在第一行之后将以下行添加到XML:

    <?xml-stylesheet type="text/xsl" href="book.xsl"?>

    并保存为book.xml

  2. 编辑您的XSL文件并将其作为book.xsl保存在与XML文件相同的文件夹中

    <?xml version="1.0" encoding="utf-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      <!-- You need a root xsl:template tag that matches the whole document -->
      <xsl:template match="/">
        <xsl:apply-templates/>
      </xsl:template>
    
      <xsl:template match="catalog">
        <html>
          <head>
            <title>
              <xsl:text>book</xsl:text>
            </title>
          </head>
          <body bgcolor="#ffffff">
            <h1>
              <xsl:text>Lieferungen</xsl:text>
            </h1>
            <hr/>
            <table border="1">
            <!-- I added thead and tbody just to make it prettier -->
              <thead>
                <tr>
                  <th>Nummer</th>
                  <th>author</th>
                  <th>titel</th>
                  <th>genre</th>
                </tr>
              </thead>
              <tbody>
                <xsl:apply-templates/>
              </tbody>
            </table>
    
            <hr/>
            <p>
              <xsl:text>Mit Webfehler: Wie vermeidet man die falsch sortieren Spalten?</xsl:text>
            </p>
          </body>
        </html>
      </xsl:template>
    
      <xsl:template match="book">
        <tr>
          <td>
            <xsl:value-of select="@id"/>
          </td>
          <xsl:apply-templates/>
        </tr>
      </xsl:template>
    
      <xsl:template match="author|title|genre">
        <td>
          <xsl:apply-templates/>
        </td>
      </xsl:template>
    
      <!-- If you do not need to output anything from these tags 
           add an xsl:template that matches them and outputs nothing -->
      <xsl:template match="price|publish_date|description"></xsl:template>
    </xsl:stylesheet>
    
  3. 在Firefox中打开book.xsl(它可能也适用于IE)