如何在 xslt 等中删除富文本字段标签<span><p>



我的值是

<sf:pitch>&lt;p>&lt;span style="color: rgb(68, 68, 68);">https://PPsdfgndgnlksdnflksklenrgkdngldsfklsndfg.com.au&lt;/span>&lt;/p> </sf:pitch>

并且我希望输出是类似的并且去除每个"0";p〃"span";以及从SF:音高值中剥离的非文本。

https://PPsdfgndgnlksdnflksklenrgkdngldsfklsndfg.com.au

我已经放置了删除<p>的代码,但我想要一个通用代码来删除值中的任何标记。

我用来删除<p>的代码是

<xsl:value-of select="substring-before(substring-after(*:Envelope/*:Body/*:retrieveResponse/*:result/*:pitch, '&lt;p&gt;'), '&lt;/p&gt;')" disable-output-escaping="yes"/>

你说:

我想要一个通用代码来从值中删除任何标记

但是没有任何";标签";在CCD_ 3的值中;这都是一个包含一些转义标记的字符串。除非您先将字符串转换为XML(使用XSLT3.0或禁用转义的单独转换(并进行处理,否则您必须使用字符串操作来处理它——这很困难,而且容易出错。

也许你可以做一些类似的事情:

<xsl:value-of select="replace($string, '.*&gt;([^&lt;]+)&lt;.*', '$1')" />

其中$string是示例中的sf:pitch元素。

但总的来说,这不是一个好的方法——请看这里的原因。

如果您有权访问fn:parse-xml()函数或类似的扩展函数,请使用string(parse-xml(text()))。这是假设内容是格式良好的XML。备选方案为parse-xml-fragment()parse-html()

<xsl:template match="sf:pitch">
<xsl:value-of select="text()"/>
</xsl:template>

但你并没有说明它是每一个sf:音高还是任何其他可能的变化。

相关内容

  • 没有找到相关文章

最新更新