gpt4 book ai didi

xslt - 如何剥离标签上下文相关?

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

假设我有一个这样的源示例文档:

<html>
<b><i><u>TestBIU</u></i></b>
<i><b><u>TestIBU</u></b></i>
<i><u><b>TestIUB</b></u></i>
<b><u><i>TestBUI</i></u></b>
<u><i><b>TestUIB</b></i></u>
<u><b><i>TestUBI</i></b></u>
<u>TestU</u>
<i>TestI</i>
<b>TestB</b>
<u><b>TestUB</b></u>
</html>

我需要一个生成这个的 XSLT 模板:

<html>
<b><i>TestBIU</i></b>
<i><b>TestIBU</b></i>
<i><b>TestIUB</b></i>
<b><i>TestBUI</i></b>
<i><b>TestUIB</b></i>
<b><i>TestUBI</i></b>
<u>TestU</u>
<i>TestI</i>
<b>TestB</b>
<b>TestUB</b>
</html>

因此,当下划线标签与斜体和/或粗体标签组合出现时,它应该删除它。仅下划线时,应保留。有什么想法可以解决这个特定问题吗?

这是我的尝试,但如果 TestUIB 和 TestUBI 失败:

<xsl:template match="/">
<html>
<xsl:apply-templates />
</html>
</xsl:template>
<xsl:template match="b/u">
<xsl:apply-templates />
</xsl:template>
<xsl:template match="i/u">
<xsl:apply-templates />
</xsl:template>
<xsl:template match="u/i">
<i><xsl:apply-templates /></i>
</xsl:template>
<xsl:template match="u/b">
<b><xsl:apply-templates /></b>
</xsl:template>
<xsl:template match="b | u | i">
<xsl:copy>
<xsl:apply-templates select="* | text()"/>
</xsl:copy>
</xsl:template>

最佳答案

我觉得

<xsl:stylesheet 
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

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

<xsl:template match="b//u | i//u | u[b] | u[i]">
<xsl:apply-templates/>
</xsl:template>

</xsl:stylesheet>

足够了。

关于xslt - 如何剥离标签上下文相关?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13414894/

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