xslt - XSLT 2.0 / XPATH 测试特定位置的父元素
问题描述
在 XSLT 2.0 和 XPATH 中<xsl:template match="lb">
,我正在测试各种不同的case
情况,其中每种情况都会产生不同的 HTML 输出(使用xsl:choose/xsl:when
)。
我想测试以下情况,元素lb
内任何排序的第一个节点在哪里:seg
<seg><lb break="n"/>text</seg>
相比之下,这些测试会失败:
<seg>text<lb break="n"/>text</seg>
<seg><foo/><lb break="n"/>text</seg>
我尝试过组合parent
,position()
但测试不正确。
非常感谢。
解决方案
有一个模板匹配lb
然后xsl:choose/when
在我看来可以通过精确的匹配模式更优雅和紧凑地解决,例如xsl:template match="seg/node()[1][self::lb]"
将匹配seg
父节点的任何第一个子节点,其中子节点是一个lb
元素。对于其他条件,您将设置具有不同匹配模式的不同模板。
但是如果需要,您可以使用. is parent::seg/node()[1]
insidexsl:template match="lb"
以相反的方式编写它。
推荐阅读
- regex - Rgex 不能按预期使用 sed 命令
- algorithm - 交付的物品包装优化
- java - 在 JOptionPane 中显示增量值
- sql - 仅从另一个表中选择直到时间戳的记录
- python - 如何获取我在 discord py 中使用命令回复的消息的 ID?
- egl - 无法创建 egl 表面:错误 = 0x300b
- node.js - Sequelize 查询以查找日期范围和时间范围之间的所有记录
- gitlab - 如何在 GitLab 中为使用 Java 的 Docker 映像运行 Trivy stable?
- scala - 如果选项已定义,如何将 Option[Long] 推送或附加到 Seq[Long]?
- javascript - 我收到此错误 MongoClient 必须连接才能执行此操作