如何在XSLT中轻松生成唯一字符串?

时间:2012-04-11 12:32:00

标签: xslt doxygen

我有一个问题!

我有一个包含部分和子部分的XML文档。我正在使用XSLTProc生成一个Doxygen页面,现在我遇到了问题。当我生成这样的部分名称时:

<xsl:template match="SECTION/SUBSECTION">
@subsection <xsl:value-of select="@title"/>
<xsl:apply-templates/>
</xsl:template>

然后标题的第一个单词没有出现,因为Doxygen希望以这种方式声明:

@subsection <subsectionname> <subsectiontitle>

因此,第一个单词将自动视为子节名称。将随机生成的字符串放在那里似乎不是一个非常简单的任务。我尝试使用<xsl:value-of select="count(preceding-sibling::*[@col]) + 1"来设置唯一的数字,它按预期工作,但事实证明,Doxygen不接受数字作为子部分名称。我还尝试剥离"@title"的空格并将其用作子节名称,但XSLTProc抱怨它不是<xslt:stylesheet>的直接子节点。我怎样才能轻松地在那里放一些独特的弦?它不一定是有意义的文本。

提前致谢!

1 个答案:

答案 0 :(得分:5)

使用generate-id()功能

<xsl:value-of select="generate-id(@title)"/> 

如果您希望生成的字符串更具“可读性”,可以采用以下方法

<xsl:value-of select="concat(@title, generate-id(@title))"/>