首页 > 解决方案 > 在 xsl 中根据 xml 深度插入空格

问题描述

在生成用于将 XML 文件转换为文本输出的 XSL 模板时需要帮助。XML 文件如下所示。

<CP Txt="Text1">
	<CP Txt="ABC">
		<CP Txt="CDE">
			<CP Txt="EFG"/>
			<CP Txt="HIJ">
				<CP Txt="KLM"/>
				<CP Txt="NOP"/>
			</CP>
		</CP>
		<CP Txt="QRS">
			<CP Txt="TUV"/>
			<CP Txt="WXY"/>
			<CP Txt="Z01"/>
		</CP>
	</CP>
</CP>

预期输出如下。

Text1
   ABC
      CDE
	EFG
	HIJ
	   KLM
	   NOP
      QRS
	TUV
	   WXY
	   Z01

任何帮助或建议都会有所帮助。

提前致谢。

标签: xmlxslt

解决方案


您可以使用 测试源树中元素的深度count(ancestor::*)

在 XPath 3.1 中,您可以$n使用string-join((1 to $n)!" ").

在 XPath 2.0 中,您可以$n使用for 表达式输出空格 string-join(for $i in (1 to $n) return ' ')

如果您只有 XPath 1.0 可用,那就更难了;我会使用一个$spaces包含尽可能多空格的字符串的变量,然后使用substring($spaces, 1, $n).

在寻求 XSLT 帮助时,请始终说明您使用的是哪个版本,因为使用 XSLT 2.0 或更高版本的解决方案通常要简单得多。


推荐阅读