показать элемент XML в таблице HTML с помощью XSLT - PullRequest
1 голос
/ 24 ноября 2011

Я новичок в XML и XSLT. у меня есть XML-файл ( book.xml )

и я хочу создать HTML-таблицу с преобразованием xsl и показать детали книг в этой таблице. Вот мой код 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 ]

1 голос
/ 25 ноября 2011

Возможно, вам нужно добавить ссылку на xsl в ваш .xml

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

Остальная часть .xml следует

В противном случае вам следует использовать процессор xslt, который создаст ваш html на основе вашего .xml и вашего .xsl.

Edit:

Для визуальной студии, пожалуйста, посетите: http://msdn.microsoft.com/en-us/library/aa302298.aspx

0 голосов
/ 25 ноября 2011
  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. Откройте book.xsl в Firefox (вероятно, это будеттакже работает в IE)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...