XSLT从XML文本节点设置HTML bgcolor
我试图使用XSLT将XML转换为HTML,其中表格单元格的bgcolor属性取自表格中特定列的输入XML 我的XML:XSLT从XML文本节点设置HTML bgcolor,html,xml,xslt,Html,Xml,Xslt,我试图使用XSLT将XML转换为HTML,其中表格单元格的bgcolor属性取自表格中特定列的输入XML 我的XML: <?xml version="1.0"?> <ROWSET> <ROW> <PROJECTS>EPM Critical Patches – December 11, 2019</PROJECTS> <STATUS>lime</STATUS> </ROW> <ROW
<?xml version="1.0"?>
<ROWSET>
<ROW>
<PROJECTS>EPM Critical Patches – December 11, 2019</PROJECTS>
<STATUS>lime</STATUS>
</ROW>
<ROW>
<PROJECTS>Archive Project</PROJECTS>
<STATUS>red</STATUS>
</ROW>
<ROW>
<PROJECTS>12.1.9 ERP upgrade</PROJECTS>
<STATUS>lime</STATUS>
</ROW>
</ROWSET>
EPM关键补丁–2019年12月11日
石灰
档案项目
红色
12.1.9 ERP升级
石灰
我的XSL:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<HTML>
<BODY>
<xsl:apply-templates/>
</BODY>
</HTML>
</xsl:template>
<xsl:template match="/*">
<TABLE BORDER="0">
<TR><TD><CENTER><font face="verdana" color="Blue" size="4">Go Live</font></CENTER></TD></TR>
<TR>
<xsl:for-each select="*[position() = 1]/*">
<TD style="font-family:verdana;font-size: 10px; " bgcolor="red">
<xsl:value-of select="local-name()"/>
</TD>
</xsl:for-each>
</TR>
<xsl:apply-templates/>
</TABLE>
</xsl:template>
<xsl:template match="/*/*">
<TR>
<xsl:apply-templates/>
</TR>
</xsl:template>
<xsl:template match="/*/*/*">
<xsl:choose>
<xsl:when test="name() = 'STATUS'">
<TD style="font-family:verdana;font-size: 10px; " bgcolor ="{//STATUS}"> </TD>
</xsl:when>
<xsl:otherwise>
<TD style="font-family:verdana;font-size: 10px; "> <xsl:value-of select="."/> </TD>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
上线
我得到的输出:
<HTML>
<BODY>
<TABLE BORDER="0">
<TR>
<TD>
<CENTER>
<font face="verdana" color="Blue" size="4">Go Live</font>
</CENTER>
</TD>
</TR>
<TR>
<TD style="font-family:verdana;font-size: 10px; " bgcolor="red">PROJECTS</TD>
<TD style="font-family:verdana;font-size: 10px; " bgcolor="red">STATUS</TD>
</TR>
<TR>
<TD style="font-family:verdana;font-size: 10px; ">EPM Critical Patches – December 11, 2019</TD>
<TD style="font-family:verdana;font-size: 10px; " bgcolor="lime"/>
</TR>
<TR>
<TD style="font-family:verdana;font-size: 10px; ">Archive Project</TD>
<TD style="font-family:verdana;font-size: 10px; " bgcolor="lime"/>
</TR>
<TR>
<TD style="font-family:verdana;font-size: 10px; ">12.1.9 ERP upgrade</TD>
<TD style="font-family:verdana;font-size: 10px; " bgcolor="lime"/>
</TR>
</TABLE>
</BODY>
</HTML>
上线
项目
地位
EPM关键补丁–2019年12月11日
档案项目
12.1.9 ERP升级
我想要的输出:
<HTML>
<BODY>
<TABLE BORDER="0">
<TR>
<TD>
<CENTER>
<font face="verdana" color="Blue" size="4">Go Live</font>
</CENTER>
</TD>
</TR>
<TR>
<TD style="font-family:verdana;font-size: 10px; " bgcolor="red">PROJECTS</TD>
<TD style="font-family:verdana;font-size: 10px; " bgcolor="red">STATUS</TD>
</TR>
<TR>
<TD style="font-family:verdana;font-size: 10px; ">EPM Critical Patches – December 11, 2019</TD>
<TD style="font-family:verdana;font-size: 10px; " bgcolor="lime"/>
</TR>
<TR>
<TD style="font-family:verdana;font-size: 10px; ">Archive Project</TD>
<TD style="font-family:verdana;font-size: 10px; " bgcolor="red"/>
</TR>
<TR>
<TD style="font-family:verdana;font-size: 10px; ">12.1.9 ERP upgrade</TD>
<TD style="font-family:verdana;font-size: 10px; " bgcolor="lime"/>
</TR>
</TABLE>
</BODY>
</HTML>
上线
项目
地位
EPM关键补丁–2019年12月11日
档案项目
12.1.9 ERP升级
每行中第二个单元格的bgcolor应具有输入XML中该行的状态文本节点的值。相反,它会在其余行中重复第一行的值。我还尝试将
放入bgcolor属性中,但它抱怨“与元素类型“TD”关联的属性“bgcolor”的值不能包含”
它在其余部分中重复第一行的值
当然有:
bgcolor ="{//STATUS}"
获取整个文档中的所有状态
元素,并(在XSLT 1.0中)返回第一个元素的值
由于您已经处于状态的上下文中,并且需要当前值,请尝试:
bgcolor ="{.}"