Html 使用XSLT为XML中的唯一元素着色

Html 使用XSLT为XML中的唯一元素着色,html,css,xml,xslt,unique-key,Html,Css,Xml,Xslt,Unique Key,我目前有一个XML文档,它基本上由人与人之间的几个对话组成,就像IM对话一样 我的每一次对话都显示了到目前为止我想要的方式,除了我希望每个名字都是唯一的颜色以便于阅读 我所知道的是XML是通过CSS转换成HTML的。我想使用XPath和XSL 1.0来实现这一点: XML 2010-05-30 多好的描述啊 2009-12-22 03:55:00 短梗 我说了些什么 03:56:00 杰姆斯 你说什么? 03:56:00 短梗 我说了些什么! ... 03:57:00 短梗 愚蠢的 理想情况

我目前有一个XML文档,它基本上由人与人之间的几个对话组成,就像IM对话一样

我的每一次对话都显示了到目前为止我想要的方式,除了我希望每个名字都是唯一的颜色以便于阅读

我所知道的是XML是通过CSS转换成HTML的。我想使用XPath和XSL 1.0来实现这一点:

XML


2010-05-30
多好的描述啊
2009-12-22
03:55:00
短梗
我说了些什么
03:56:00
杰姆斯
你说什么?
03:56:00
短梗
我说了些什么!
...
03:57:00
短梗
愚蠢的
理想情况下,我希望第一个扬声器的输出为

,第二个扬声器的输出为

,依此类推

我试图使用Meunchian方法来找出我有多少独特的扬声器,但我的扬声器不起作用:

...
<xsl:key name="speakerList" match="wtf:whisper" use="wtf:speaker" />

    <xsl:template match="/">
        <html lang="en">
        <body>
        <p>
            <xsl:value-of select="count( key( 'speakerList', wtf:speaker ) )" />
        </p>
        </body>
        </html>
    </xsl:template> 
...
。。。

...
当我输入'Jaymes'或'Stubbymush'时,我会得到正确的演讲者发言次数,但不会得到对话中总共有多少演讲者


提前感谢,如果您对更简单的方法有任何建议,因为我过于复杂了,请提供建议。

此转换

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns:w="http://wtfwhispers.kicks-ass.org"
 >
 <xsl:output method="text"/>

 <xsl:key name="kSpeakerByVal" match="w:speaker" use="."/>

 <xsl:template match="/">
  <xsl:value-of select=
   "count(
          /*/*/*/w:whisper/w:speaker
                       [generate-id()
                       =
                        generate-id(key('kSpeakerByVal',.)[1])
                        ]
          )
   "/>
 </xsl:template>
</xsl:stylesheet>
2

好问题(+1)。请看我的答案以获得一个简单的解决方案。谢谢Dimitre,它工作得非常好!这真的让我偏头痛-
2