我的值是
<sf:pitch><p><span style="color: rgb(68, 68, 68);">https://PPsdfgndgnlksdnflksklenrgkdngldsfklsndfg.com.au</span></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, '<p>'), '</p>')" disable-output-escaping="yes"/>
你说:
我想要一个通用代码来从值中删除任何标记
但是没有任何";标签";在CCD_ 3的值中;这都是一个包含一些转义标记的字符串。除非您先将字符串转换为XML(使用XSLT3.0或禁用转义的单独转换(并进行处理,否则您必须使用字符串操作来处理它——这很困难,而且容易出错。
也许你可以做一些类似的事情:
<xsl:value-of select="replace($string, '.*>([^<]+)<.*', '$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:音高还是任何其他可能的变化。