gpt4 book ai didi

xml - 使用 xslt 从特定 xml 元素中排除属性

转载 作者:数据小太阳 更新时间:2023-10-29 01:39:51 26 4
gpt4 key购买 nike

我是 xslt 的新手。我有以下问题。我需要在 xml 中从特定元素(例如 theAttribute)中删除特定属性(示例中的 div)。即

<html>
<head>...</head>
<body>
<div id="qaz" theAtribute="44">
</div>
<div id ="ddd" theAtribute="4">
<div id= "ggg" theAtribute="9">
</div>
</div>
<font theAttribute="foo" />
</body>
</html>

成为

<html>
<head>...</head>
<body>
<div id="qaz">
</div>
<div id ="ddd">
<div id= "ggg">
</div>
</div>
<font theAttribute="foo" />
</body>
</html>

其中属性 theAtribute 已被删除。我找到了这个, http://www.biglist.com/lists/xsl-list/archives/200404/msg00668.html在此基础上,我尝试找到合适的解决方案。

<xsl:template match="@theAtribute" />

它从整个文档中删除了它......以及其他类似匹配,如果选择等。没有任何效果.. :-(你能帮我解决这个问题吗?这对我来说听起来微不足道,但是对于 xslt,我不能完全应付...

先谢谢大家

最佳答案

什么不起作用?您想要相同的内容,只是没有 @theAtribute 吗?

如果是这样,请确保您的样式表具有 @theAtribute 的空模板,但也具有将其他所有内容复制到输出中的标识模板:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!--empty template suppresses this attribute-->
<xsl:template match="@theAtribute" />
<!--identity template copies everything forward by default-->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>

如果您只想抑制某些@theAtribute,那么您可以使匹配条件更具体。例如,如果您只想从 @id="qaz"div 中删除该属性,那么您可以使用此模板:

<xsl:template match="@theAtribute[../@id='qaz']" />

或者这个模板:

<xsl:template match="*[@id='qaz']/@theAtribute" />

如果要从所有 div 元素中删除 @theAttribute,则将匹配表达式更改为:

<xsl:template match="div/@theAtribute" />

关于xml - 使用 xslt 从特定 xml 元素中排除属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3116396/

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