XSLT模板与XML源无法正确匹配

时间:2013-11-12 07:05:10

标签: xml xslt

我的问题是我的样式表没有正确加工我的xml文件。如果注释掉Machine - 标签的模板,我会看到我的错误表,如果我有像我在这里发布的样式表,我只看到我的机器标签生成的链接,但没有错误。

我有以下XML源文件:

XML:

<Machine HtmlUri="http://stackoverflow.com" Name="XY1">
  <Errors Count="2">
    <Error>
      <TimeStamp>2013-11-12T07:27:24.9766747+01:00</TimeStamp>
      <Machine>XY1</Machine>
      <Message> ... </Message>
      <InnerException />
      <StackTrace> ... </StackTrace>
    </Error>
    <Error>
      <TimeStamp>2013-11-12T07:27:24.9766747+01:00</TimeStamp>
      <Machine>XY1</Machine>
      <Message> ... </Message>
      <InnerException />
      <StackTrace> ... </StackTrace>
    </Error>
  </Errors>
</Machine>

我有这个样式表。我对xslt不是很熟悉,我对w3school.com等网站的所有研究都无法帮助我。

XSLT:

<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:output method="html" indent="yes"/>
  <xsl:template match="/">
    <html>
      <meta http-equiv="content-type" content="text/html; charset=utf-8" />
      <body>
        <h2>Status File</h2>
        <xsl:apply-templates />
      </body>
    </html>
  </xsl:template>

  <xsl:template match="Machine">
    <h5>Machine Information:</h5>
    <div>
      <a href="{@HtmlUri}" target="_blank">
        <xsl:apply-templates select="@HtmlUri" />
      </a>
    </div>
  </xsl:template>

  <xsl:template match="Errors">
    <h5>Errors:</h5>
    <div>
      <table border="1">
        <tr bgcolor="#dd0000">
          <th>Machine</th>
          <th>TimeStamp</th>
          <th>Message</th>
        </tr>
        <xsl:for-each select="Error">
          <tr bgcolor="ff0000">
            <td>
              <xsl:value-of select="./Machine"/>
            </td>
            <td>
              <xsl:value-of select="./TimeStamp"/>
            </td>
            <td>
              <xsl:value-of select="./Message"/>
            </td>
          </tr>
        </xsl:for-each>
      </table>
    </div>
  </xsl:template>

</xsl:stylesheet>

1 个答案:

答案 0 :(得分:1)

根据一些有用的评论我解决了我的问题。

因此我需要一个非常通用的XSLT模板我决定在我的Machine - 模板中应用其他模板。

现在我的工作 XSLT

  [...]
  <xsl:template match="Machine">
    <h5>Machine Information:</h5>
    <div>
      <a href="{@HtmlUri}" target="_blank">
        <xsl:apply-templates select="@HtmlUri" />
      </a>
    </div>
    <xsl:apply-templates />
  </xsl:template>
  [...]