gpt4 book ai didi

xml - 如何使用 XSL 在 href 中查找具有特定关键字的 元素?

转载 作者:行者123 更新时间:2023-12-04 05:17:30 24 4
gpt4 key购买 nike

我正在尝试编写一个 HTML 到 BBCode 转换器,但作为 XSL 中的新手,我需要帮助打破僵局。这是我到目前为止所得到的:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" encoding="UTF-8">
<xsl:output method="text" omit-xml-declaration="yes" indent="no" encoding="UTF-8"/>

<xsl:template match="h1|h2|h3|h4">[h]<xsl:apply-templates/>[/h]</xsl:template>
<xsl:template match="b|strong">[b]<xsl:apply-templates/>[/b]</xsl:template>
<xsl:template match="i|em">[i]<xsl:apply-templates/>[/i]</xsl:template>
<xsl:template match="u">[u]<xsl:apply-templates/>[/u]</xsl:template>
<xsl:template match="br">&#10;</xsl:template>
<xsl:template match="p">&#10;<xsl:apply-templates/>&#10;&#10;</xsl:template>
<xsl:template match="img">[img]<xsl:value-of select="@src"/>[/img]</xsl:template>
<xsl:template match="a">[url="<xsl:value-of select="@href"/>"]<xsl:apply-templates/>[/url]</xsl:template>

<xsl:template match="style|script"></xsl:template>

</xsl:stylesheet>

你会怎么搭配 <a>href 中有特定关键字的并删除这些节点,同时保留其他节点?然后检查那些 <a>是否为空,从而决定是否使用 [url]http://foo[/url][url="http://foo"]bar[/url] ?

例如:
<a href="http://spammycrap.tld">Foo</a>
<a href="http://empty.tld"></a>
<a href="http://okay.tld">Baz</a>

期望的输出:
[url]http://empty.tld[/url]
[url="http://okay.tld"]Baz[/url]

最佳答案

删除在其 href 中有不需要的字符串的 anchor 属性,展开您的 match XPath 表达式:

<xsl:template match="a[not(contains(@href,'Foo'))]">...
Foo可能是 spammycrap.com或者什么。

此外,您可以为空 anchor 和非空 anchor 指定不同的模板。因此,对于非空 anchor ,您将使用:
<xsl:template match="a[not(contains(@href,'Foo')) and not(count(node()) = 0)]">...

其次是非空 anchor 的模板。然后对于空 anchor :
<xsl:template match="a[not(contains(@href,'Foo')) and not(node())]">...

其次是空 anchor 的模板。

总的来说,这变成了:
<xsl:template match="a[not(contains(@href,'Foo')) and not(count(node()) = 0)]">[url="<xsl:value-of select="@href"/>"]<xsl:apply-templates/>[/url]</xsl:template>

<xsl:template match="a[not(contains(@href,'Foo')) and not(node())]">[url]<xsl:value-of select="@href"/>[/url]</xsl:template>

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