首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >XSLT:不包括子节点

XSLT:不包括子节点
EN

Stack Overflow用户
提问于 2013-11-19 00:00:07
回答 2查看 1.7K关注 0票数 3

我们使用XSLT将XML转换为HTML。在其中的一部分中,我们有一个元素列表,我们需要提取字符串数据,减去任何XML标记,以便在另一个位置使用。

当前的XSL很简单:

代码语言:javascript
复制
<xsl:variable name="label_Text" select=".//column_header_1"/>
...
<xsl:value-of select="$label_Text"/>

在大多数情况下,这很好,但是一些column_header元素包含某些应该排除的子节点。以这个XML片段为例:

来自编辑器的note栏 note

当前的XSL返回“编辑器的Foo注释”,但是我们不希望这个位置包含editor_note节点。上述代码段所需的结果将是"Foo Bar“。

我觉得我应该能用

代码语言:javascript
复制
<xsl:value-of select="$label_Text[not(editor_note)]"/>

但到目前为止,我还没能做到这一点。

请注意,不应将editor_note元素排除在整个文档中,而只应将其排除在此特定值之外,这似乎排除了使用空模板删除节点。

EN

Stack Overflow用户

回答已采纳

发布于 2013-11-19 08:43:04

Bob Dalgleish的答复经过编辑/更正:

使用应用模板的模式形式。

在列标题中,以“非编辑器-备注”模式调用xsl:apply-templates,该模式将抑制此类注释。

代码语言:javascript
复制
<xsl:apply-templates select="." mode="non-editor-note"/>

在“非编辑备注”模式下,只需要有一个特定的规则:

代码语言:javascript
复制
  <xsl:template match="editor_note" mode="non-editor-note"/>

对于所有其他节点,默认模板规则完全按照您的要求执行:忽略标记并递归到文本节点,然后复制文本节点。

票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20060511

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档