xml - 在 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
任何帮助或建议都会有所帮助。
提前致谢。
解决方案
您可以使用 测试源树中元素的深度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 或更高版本的解决方案通常要简单得多。
推荐阅读
- node.js - 从公司服务器调用第三部分 api 时读取 ECONNRESET 错误
- android - TextView 将长文本分成新行
- ios - 如何在 SwiftUI 中运行应用程序时更改视图
- mongodb - mongodb的bson vs gzip转储
- c++ - C++:为什么/如何在此代码中使用 Break 语句?
- garbage-collection - 为什么 GarbageCollector 会这样工作?
- javascript - 在 Javascript 中从 fetch() 调用返回值
- java - React Native:错误:[消息/未知] java.io.IOException:java.util.concurrent.ExecutionException:java.io.IOException:FIS_AUTH_ERROR
- rust - 程序宏中的代码未添加到流中
- linux - 在 ubuntu 20.04 中安装虚幻引擎需要多少时间和总磁盘空间?