我的问题是我的样式表没有正确加工我的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>
答案 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>
[...]