任何一个对这里的 xml 和 xslt 感到满意的人,在我的 xml 中,我试图使用下面的 xslt 为两个具有不同属性的不同“p”标签着色
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>
您的模板匹配
p
。这为您在模板中使用的相对路径建立了上下文。这意味着你的情况:
<xsl:when test="p/@color='red'">
仅当当前
p
具有子 p
元素且其 color
属性值为“red”时才为真。对于 XML 中的任何 p
元素,这当然不是真的。你应该测试:
<xsl:when test="@color='red'">
而不是:
<xsl:value-of select="p"/>
你需要:
<xsl:value-of select="."/>