题
我有以下输入:
<node TEXT="txt">
<node TEXT="txt">
<node TEXT="txt"/>
<node TEXT="txt"/>
</node>
<node TEXT="txt"/>
</node>
<node TEXT="txt"/>
我目前使用的:
<xsl:number level="multiple" count="node" format="1"/>
内的XSTL脚本接收以下输出:
1 txt
1.1 txt
1.1.1 txt
1.1.2 txt
1.2 txt
2 txt
,但我希望有这样的输出:
* txt
** txt
*** txt
*** txt
** txt
* txt
你能帮助我吗?
PS:我想一个FreeMind的地图转换为基本的mediawiki列表语法。是的!据我所知,有几种方法可以得到本地的FreeMind地图到媒体维基,但我需要的<node>
树转化为***
-名单
解决方案
一个简单的方法来做到这一点,只是翻译的结果。
<xsl:number/>成想要的格式。
此转化:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node">
<xsl:variable name="vIndent">
<xsl:number level="multiple" count="node"/>
</xsl:variable>
<xsl:value-of select=
"concat(translate($vIndent,
'1234567890.',
'**********'),
' ',
@TEXT,
'
'
)"/>
<xsl:apply-templates/>
</xsl:template>
</xsl:stylesheet>
当此XML文档上施加:
<t> <node TEXT="txt"> <node TEXT="txt"> <node TEXT="txt"/> <node TEXT="txt"/></node> <node TEXT="txt"/></node> <node TEXT="txt"/> </t>
产生想要的结果:
* txt ** txt *** txt *** txt ** txt * txt
请注意使用translate()函数的丢弃任何“”字符和以任何数字转换成一个“*”。
不隶属于 StackOverflow