XSL中如何选取当前标签之后父节点内的文本内容
实现方法
你在匹配<i>标签的XSL模板上下文中,直接通过XPath的following-sibling轴选取当前节点的后续兄弟文本节点即可,不需要做复杂的字符串截取,XSLT全版本通用该写法。
核心代码示例
<!-- 匹配title下i节点的模板 --> <xsl:template match="title/i"> <!-- 此处写你原本处理i节点本身的业务逻辑,例如下标、斜体渲染 --> <i><xsl:apply-templates/></i> <!-- 提取当前i节点之后、父title节点内的所有文本内容 --> <xsl:value-of select="following-sibling::text()"/> </xsl:template>
说明
- 上述代码中
following-sibling::text()的作用是选取当前<i>节点之后,和它同属一个父<title>节点的所有文本节点,自动拼接后就是你需要的‐Heterocyclic Carbenes and Their Complexes by Chloronium Ion Abstraction from 2‐Chloroazolium Salts Using Electron‐Rich Phosphines片段,完全不会包含<i>节点前的Synthesis of文本。 - 如果
<i>节点后还存在其他内联元素(例如<sub>、<b>等),需要连同标签结构一起输出的话,把取值逻辑替换为<xsl:apply-templates select="following-sibling::node()"/>即可。 - 如果不需要文本首尾多余的换行、缩进空白,可以给选取结果套
normalize-space()函数,写法为<xsl:value-of select="normalize-space(following-sibling::text())"/>。
内容的提问来源于stack exchange,提问作者Hamza Ibraheem
相关产品推荐
相关产品推荐

