xslt - 如何消除标签的所有出现?
问题描述
我想用 xslt 从输出中删除一个标签,方法是保留它的所有 children。在下面的示例中,我试图消除所有出现的<b>
.
输入(带<b>
标签):
<a>
text
<b>
<child/>
text
</b>
</a>
<b>
在消除s之后,预期的输出应该是:
<a>
text
<child/>
text
</a>
因此,目标是保留 的子级,方法<b>
是将它们在标签层次结构中上移一级。
我认为一些复杂的模板可以做到这一点,但是有一个简单的解决方案吗?我还在 xslt-1 中。
解决方案
你可以这样做:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="b">
<xsl:apply-templates/>
</xsl:template>
</xsl:stylesheet>
看到它在这里工作:https ://xsltfiddle.liberty-development.net/6q1SDk3
推荐阅读
- python - 如何在 Numpy 数组中设置单个索引
- c# - Deserialize JSON with empty string key
- java - 基于 HTTP 请求 getLocale 的货币抛出 IllegalArgumentException
- regex - 捕获两个字符之间的子字符串?
- python - Using a conditional comprehesion and the re.search function to find all the strings in a list?
- postgresql - 加密的 AWS PostgreSQL RDS 如何在幕后工作?
- javascript - Why is my iframe blocked by cross origin even it is not
- google-apps-script - GmailApp.Search not returning emails in a date range
- coq - 仅折叠应用程序
- c++ - 为什么在这里使用 int64_t 错误并且 int 编译?