gpt4 book ai didi

XSLT:如何从 xml 字符串中排除某些 html 标签?

转载 作者:行者123 更新时间:2023-12-01 01:14:15 24 4
gpt4 key购买 nike

我正在尝试使用 XSLT 1.0 从 xml 字符串中排除某些 html 标签集

在这里,目前我排除了 <a><img>标签。对于 <a>标签,我只想显示文本。

试过 XSLT 模板:

<xsl:template match="*" mode="ExcludeHTMLTags">
<xsl:choose>
<xsl:when test="local-name() = 'a' or local-name() = 'img'">
<xsl:value-of select="text()"/>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="node()|@*"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>

以下面的方式调用上面的模板:
<xsl:variable name="guideContent">
<root>
<xsl:apply-templates
select="document(@guideID)/tcm:Component/tcm:Data/tcm:Content/em:GeneralContent/em:Body/node()"
mode="expandXHTML"/>
</root>
</xsl:variable>
<xsl:apply-templates select="msxsl:node-set($guideContent)/node()" mode="ExcludeHTMLTags"/>

输入 XML 字符串:
<root>
This is a test message.
<p>Message within p tag</p> click <a href="www.test.com">here</a>.
<img src="/test.jpg" /> Message after image.
<strong>Message within strong</strong>
<link:component id="XXX" ... >My Link</link:component>
<p>Message after link component</p>
</root>

输出:
<root>
This is a test message.
<p>Message within p tag</p> click here.
Message after image.
<strong>Message within strong</strong>
<link:component id="XXX" ... >My Link</link:component>
<p>Message after link component</p>
</root>

请建议我做错了什么并告诉最好的方法。

最佳答案

本次改造 :

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>

<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>

<xsl:template match="a"><xsl:apply-templates/></xsl:template>
<xsl:template match="img"/>
</xsl:stylesheet>

应用于此 XML 文档时 (OP 没有提供!!!):
<html>
<body>
<a>Anchor text</a>
<img source="http://someUrl"/>
</body>
</html>

产生想要的、正确的结果:
<html>
<body>Anchor text</body>
</html>

关于XSLT:如何从 xml 字符串中排除某些 html 标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12991979/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com