尝试使用 XSLT 设置 HTML 颜色属性的样式

问题描述 投票:0回答:1

任何熟悉 XML 和 XSLT 的人: 在我的 XMLl 中,我尝试使用下面的 XSLT 为两个具有不同属性的不同“p”标签着色:

<xsl:template match="p">
 <xsl:choose>
  <xsl: when test="p/@color='red'"><span style="color:#00ff00"><xsl:value-of select="p"/></span></xsl:when>
  <xsl: when test="p/@color='green'"> <span style="color:#ff0000"> <xsl:value-of select="p"/></span></xsl:when>
  <xsl: otherwise><xsl:value-of select="p"/></xsl:otherwise>
 </xsl:choose>
</xsl:template>

XML 看起来像这样

<html>
<body>
<p color="red">Last paragraph incorrect</p>
<p>A Second paragraph</p>
<p color="green">The First paragraph</p>
<p color="green">Anthony Gonsalwes</p>
</body>
<body>
<l color="green"> kumarswamy</l>
</body>
</html>
xml xslt xhtml
1个回答
2
投票

您的模板匹配

p
。这将为您在模板内使用的相对路径建立上下文。这意味着您的情况:

<xsl:when test="p/@color='red'">
仅当当前

p

 具有子 
p
 元素且 
color
 属性值为“red”时,
才会为 true。当然,对于 XML 中的任何
p
元素来说,情况并非如此。你应该进行测试:

<xsl:when test="@color='red'">

而不是:

<xsl:value-of select="p"/> 

你需要:

<xsl:value-of select="."/> 
© www.soinside.com 2019 - 2024. All rights reserved.