XSLT:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ps="http://schemas.microsoft.com/powershell/2004/04"
exclude-result-prefixes="ps">
<xsl:template match="/">
<div id="reports">
<xsl:call-template name="report">
<xsl:with-param name="report" select="." />
<xsl:with-param name="heading">Today</xsl:with-param>
</xsl:call-template>
</div>
</xsl:template>
<xsl:template name="report">
<table border="1" cellpadding="4">
<thead>
<tr class="subheads">
<td>IP</td>
<td>Hits</td>
</tr>
</thead>
<tbody>
<xsl:for-each select="$report/ps:Objs/ps:Obj/ps:Props">
<xsl:sort select="Hits" order="descending" data-type="number" />
<tr>
<xsl:attribute name="class">
<xsl:choose>
<!-- Even rows get the alt-row class -->
<xsl:when test="position() mod 2 = 0">alt row</xsl:when>
</xsl:choose>
<xsl:if test="Hits > 1000"> alert</xsl:if>
</xsl:attribute>
<td><xsl:value-of select="ps:S[@N='Name']"/></td>
<td><xsl:value-of select="ps:I32[@N='Count']"/></td>
</tr>
</xsl:for-each>
</tbody>
</table>
</xsl:template>
</xsl:stylesheet>
XML文件:http://pastebin.com/Nzq6bC9b
(我没有直接包含XML,因为我似乎无法清楚地将其格式化)
我被要求帮助正确地从XML文件中提取XSLT文档并创建包含数据的表。我以前没有使用XSLT的经验,并且已经搜索了很多尝试完成我的任务。我见过很多例子,但我找不到任何显示如何从像我这样格式化的文件中提取的例子。如果有人可以帮助我,我将不胜感激。
答案 0 :(得分:0)
首先想一想,请提供完整且结构良好的文件,如Minimal, Complete and Verifiable example,如michael.hor257k和Michael Kay之前提到的。
通过Pastebin链接的XML文件是错误的,导致根元素objs
未关闭。
将您的命名模板更改为以下内容:
<xsl:template name="report">
<xsl:param name="report"/>
<xsl:param name="heading"/>
...
</xsl:template>
<强>结果强>
<div id="reports">
<table border="1" cellpadding="4">
<thead>
<tr class="subheads">
<td>IP</td>
<td>Hits</td>
</tr>
</thead>
<tbody>
<tr class="">
<td>"16.249.75.135,</td>
<td>87319</td>
</tr>
<tr class="alt row">
<td>"26.249.91.195,</td>
<td>22510</td>
</tr>
<tr class="">
<td>"16.249.69.8,</td>
<td>6370</td>
</tr>
<tr class="alt row">
<td>"68.181.230.228,</td>
<td>3818</td>
</tr>
</tbody>
</table>
</div>