【发布时间】:2017-12-08 10:11:34
【问题描述】:
我正在做 xslt 转换,但我遇到了问题。我必须转换的文本有一些 html 标签,但我有 < 和 > 而不是 。我想从
ici-import/issue/article/languageVersion/abstract
并将其转化为新元素:abstract,删除html标签
这是我试图实现的代码:
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="ici-import/issue/article/languageVersion/">
<xsl:variable name="StripHTML">
<![CDATA[<\s*\w.*?>|<\s*/\s*\w\s*.*?>]]>
</xsl:variable>
<xsl:analyze-string select="abstract" regex="{$StripHTML}">
<xsl:non-matching-substring>
<xsl:value-of select="."/>
</xsl:non-matching-substring>
</xsl:analyze-string>
</xsl:template>
</xsl:stylesheet>
我目前的 xslt:
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<ici-import>
<journal issn="2299-3711" />
<issue>
<xsl:for-each select="issue/section">
<xsl:for-each select="article">
<article>
<languageVersion>
<xsl:if test="abstract != ''">
<abstract>
<xsl:value-of select="abstract"/>
</abstract>
</xsl:if>
</languageVersion>
</article>
</xsl:for-each>
</xsl:for-each>
</issue>
</ici-import>
</xsl:template>
</xsl:stylesheet>
【问题讨论】:
-
那么您的输入看起来如何?您使用哪种 XSLT 处理器?转义的 HTML 是可解析为 XHTML 还是使用 HTML 语法(如缺少结束标记或未引用的属性值)?