XSL文件按警报对报告进行分组,并将其用作唯一标识符。但是,它应该按站点名称+警报进行分组。网站具有名称属性:
<site name="http://192.168.56.110" host="192.168.56.110" port="80" ssl="false">
这是因为多个站点可能具有相同的警报。但是这个警报只会出现在一个网站下面。有关如何修改代码的任何建议,以便警报按警报和站点分组?
目前XSL看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes" />
<xsl:template match="/Report">
<Report><xsl:copy-of select="@*" />
<reportname>
<xsl:value-of select="reportname"/>
</reportname>
<reportdesc>
<xsl:value-of select="reportdesc"/>
</reportdesc>
<xsl:for-each select="site">
<site><xsl:copy-of select="@*" />
<alerts>
<xsl:key name="alertByAlert" match="alertitem" use="concat(alert)" />
<xsl:for-each select="alerts/alertitem[generate-id() = generate-id(key('alertByAlert',alert))]">
<alertitem>
<alert>
<xsl:value-of select="alert"/>
</alert>
<riskcode>
<xsl:value-of select="riskcode"/>
</riskcode>
<riskdesc>
<xsl:value-of select="riskdesc"/>
</riskdesc>
<xsl:for-each select="key('alertByAlert', alert)">
<uri>
<xsl:value-of select="uri"/>
</uri>
<param>
<xsl:value-of select="param"/>
</param>
<attack>
<xsl:value-of select="attack"/>
</attack>
</xsl:for-each>
</alertitem>
</xsl:for-each>
</alerts>
</site>
</xsl:for-each >
</Report>
</xsl:template>
</xsl:stylesheet>
答案 0 :(得分:1)
将您的密钥更改为
Data.getOrder(2)
.success(function(data) {
$scope.contactList = data;
})
.error(function(err) {
// Handle the error.
})
.then(processData);
function processData() {
angular.forEach($scope.contactList, function(value, index) {
alert(value.amount);
});
}
(并将其作为<xsl:key name="k1" match="alertitem" use="concat(ancestor::site/@name, '|', alert)" />
的孩子,在其他地方不允许)。
然后你可以在
中使用该键xsl:stylesheet