XSLT从XML文本节点设置HTML bgcolor

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

我试图使用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>
  <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 ="{.}"