我们有一个Python脚本,可生成类似于此的XML输出报告:
<ROOT>
<results3>
<ROW **TicketNumber="CHG000000061374"** Env=" " CustomerProject="MCI-Sacramento" Program="Infrastructure" Summary="INFRA - Bi-Weekly Sac Portal Maintenance - SACPORTAL2" ImplementorGroup="Database Management" Implementor="Juan "/>
<ROW **TicketNumber="CHG000000061374"** Env=" " CustomerProject="MCI-Sacramento" Program="Infrastructure" Summary="INFRA - Bi-Weekly Sac Portal Maintenance - SACPORTAL2" ImplementorGroup="Database Management" Implementor="Malcolm"/>
<ROW **TicketNumber="CHG000000061374"** Env=" " CustomerProject="MCI-Sacramento" Program="Infrastructure" Summary="INFRA - Bi-Weekly Sac Portal Maintenance - SACPORTAL2" ImplementorGroup="Incident Support-OSSC" Implementor="Amar"/>
<ROW **TicketNumber="CHG000000061375"** Env=" " CustomerProject="Verizon-KOVR" Program="Operations - SAC" Summary="INFRA - Server decom - see description" ImplementorGroup="Operations - SAC" Implementor="Ralph"/>
<ROW **TicketNumber="CHG000000061375"** Env=" " CustomerProject="Verizon-KOVR" Program="Operations - SAC" Summary="INFRA - Server decom - see description" ImplementorGroup="Operations - SAC" Implementor="Ralph"/>
然后将XML转换为HTML。
当TicketNumber变量发生更改时,我想添加标题行或添加空白行或更改格式,以便用户可以轻松查看组合在一起的一张票证的所有信息。否则它会完全运行。有没有办法在XSLT中执行此操作?
答案 0 :(得分:0)
遵循XSLT
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="yes"/>
<xsl:template match="results3">
<table>
<xsl:apply-templates select="ROW"/>
</table>
</xsl:template>
<xsl:template match="ROW">
<xsl:if test="@TicketNumber != preceding-sibling::ROW[1]/@TicketNumber">
<tr>Header</tr>
</xsl:if>
<tr>
<xsl:attribute name="id" select="@TicketNumber"/>
</tr>
</xsl:template>
</xsl:stylesheet>
当应用于示例中的调整后的输入时(删除了**)生成输出
<table>
<tr id="CHG000000061374"></tr>
<tr id="CHG000000061374"></tr>
<tr id="CHG000000061374"></tr>
<tr>Header</tr>
<tr id="CHG000000061375"></tr>
<tr id="CHG000000061375"></tr>
</table>
匹配ROW
的模板检查当前行的Ticketnumber是否与前一行/前一行的Ticketnumber不同 - @TicketNumber != preceding-sibling::ROW[1]/@TicketNumber
- 并在这种情况下添加标题行。