【发布时间】:2014-05-24 20:39:42
【问题描述】:
我在使用 XSLT 2.0 转换的 XML 文件中有一个这样的节点:
<h2><span class='sun'>☼☼</span> my text (G1.2)</h2>
如您所见,其中包括一些 HTML 特殊字符。
现在我需要像这样生成 XHTML:
<a href="....">my text</a>
所以我必须去掉跨度和 () 之间的东西,并使用其余部分来生成 h2 标头。 要去掉 (),我有这个:
<xsl:value-of select="normalize-space(replace( . ,'\([^\)]*\)' ,''))"/>
工作正常。但是要剥离跨度,我不能使用
<xsl:template match="span[@class='sun']"/>
因为我不再在 xsl:value-of 之后应用模板。所以 span-template 永远不会被应用。
我可以在同一行去掉跨度吗?如果没有,我怎样才能剥离跨度? 或者我可以以某种方式替换同一个替换函数中的特殊字符吗?然后我会留下一个空的 span 元素,但这不是问题。
【问题讨论】:
-
您能多展示一点您的 XSLT 吗?特别是,您当前的 xsl:value-of 语句是否在匹配 h2 的模板中?谢谢!
-
如果您使用
<xsl:apply-templates/>调用<h1>的内容,您可以 使用<xsl:template match="span[@class='sun']"/>。您可以将表达式应用于<h2>的text()子代,这不会影响<span>。