通过XSLT能够拿到一个无规则树型XML的层次吗?

herowach 2008-03-27 01:43:42
任意一个树性的XML,有方法能通过XSLT,
给每个XML上加上一个标识层次的属性吗?
默认根接点是第一层.
...全文
66 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
firetoucher 2008-03-28
  • 打赏
  • 举报
回复
Typo...
<xsl:template match="*">
<xsl:element name="name()">
<xsl:call-template name="t1">
<xsl:with-param name="current_node" select="."/>
<xsl:with-param name="depth" select="-1"/>
</xsl:call-template>
<xsl:apply-templates select="*"/>
</xsl:element>
</xsl:template>

<xsl:template name="t1">
<xsl:param name="current_node"/>
<xsl:param name="depth"/>
<xsl:choose>
<xsl:when test="not($current_node)">
<xsl:attribute name="depth"><xsl:value-of select="$depth"/></xsl:attribute>
</xsl:when>
<xsl:else>
<xsl:call-template name="t1">
<xsl:with-param name="current_node" select="$current_node/parent:*"/>
<xsl:with-param name="depth" select="number($depth)+1"/>
</xsl:call-template>
</xsl:else>
</xsl:choose>
</xsl:template>


FT
--
Anything one man can imagine, other men can make real.


FT
--
Anything one man can imagine, other men can make real.


firetoucher 2008-03-28
  • 打赏
  • 举报
回复
给每个XML上加上一个标识层次的属性吗?
--
老大,你的意思应该是每个element节点吧。下面是一个示例:
1. attr和ns的拷贝没写。
2. 对于层次的判定,也可以用appy-templates。但下面的代码更容易被处理器优化从而会有更好的效率。

<xsl:template match="*">
<xsl:element name="name()">
<xsl:call-template name="t1">
<xsl:with-param name="current_node" select="."/>
<xsl:with-param name="depth" select="-1"/>
</xsl:call-template>
<xsl:apply-templates select="*"/>
</xsl:element>
</xsl:template>

<xsl:template name="t1">
<xsl:param name="current_node"/>
<xsl:param name="depth"/>
<xsl:choose>
<xsl:when test="not($current_node)">
<xsl:attribute name="depth"><xsl:value-of select="$depth"/></xsl:attribute>
</xsl:when>
<xsl:else>
<xsl:call-template name="t1">
<xsl:with-param name="current_node" select="$current_node/parent:*"/>
<xsl:with-param name="depth" select="number($depth)+1"/>
</xsl:call-template>
</xsl:else>


FT
--
Anything one man can imagine, other men can make real.
内容概要:本文围绕“基于改进秃鹰算法的微电网群经济优化调度”展开研究,利用Matlab代码实现优化算法的仿真与复现。研究重点在于通过改进的秃鹰搜索算法(Bald Eagle Search Algorithm, BESA)解决微电网群在运行过程中的经济调度问题,提升算法的收敛速度与全局寻优能力,以实现对分布式能源、储能系统及负荷的高效协调管理。文中详细阐述了微电网群的系统架构、数学建模过程、目标函数设计(如运行成本最小化、碳排放降低等),并结合智能优化算法进行求解,验证了改进算法相较于传统方法在调度精度和效率方面的优越性。同时,研究还探讨了算法在多场景下的适应性,为微电网群的智能化、低碳化运行提供了技术支持与实践参考。; 适合人群:具备一定电力系统基础知识和Matlab编程能力的研究生、科研人员及从事微电网、智能优化算法相关工作的工程技术人员。; 使用场景及目标:① 学习并掌握改进秃鹰算法在复杂优化问题中的应用方法;② 实现微电网群经济调度模型的构建与求解;③ 对比不同智能算法在电力系统优化中的性能表现;④ 为科研论文复现、课题研究或工程项目提供算法支持与代码参考。; 阅读建议:建议读者结合文中提供的Matlab代码逐模块分析,重点关注算法改进策略与调度模型的耦合实现方式,同时可尝试在不同参数设置或场景条件下进行仿真实验,以加深对算法性能与调度效果的理解。

8,906

社区成员

发帖
与我相关
我的任务
社区描述
XML/XSL相关问题讨论专区
社区管理员
  • XML/XSL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧