Xslt 如何查找关闭元素后的文本并将其删除
我想删除元素和在元素后面找到的文本。 例如:Xslt 如何查找关闭元素后的文本并将其删除,xslt,Xslt,我想删除元素和在元素后面找到的文本。 例如: 生活$ 在上面的例子中,我想替换 $ 使用“”(空)或简单地删除它。 有什么建议吗 要从输入XML中删除某些内容,您应该编写一个emty模板 匹配这样的节点。其余部分由标识模板复制 至于你的任务,我怀疑你是否愿意 删除所有p元素。 因此,在我的示例脚本中,我为p元素编写了一个空模板 使用class=“xx” 要删除它后面的文本节点(示例XML中的$), 您还必须编写一个空模板,与这样一个节点匹配: 文本节点 它前面的第一个兄弟姐妹名为p和cla
生活$
在上面的例子中,我想替换
$
使用“”(空)或简单地删除它。
有什么建议吗
要从输入XML中删除某些内容,您应该编写一个emty模板 匹配这样的节点。其余部分由标识模板复制 至于你的任务,我怀疑你是否愿意 删除所有
p
元素。
因此,在我的示例脚本中,我为p
元素编写了一个空模板
使用class=“xx”
要删除它后面的文本节点(示例XML中的$
),
您还必须编写一个空模板,与这样一个节点匹配:
- 文本节点
- 它前面的第一个兄弟姐妹名为
和p
class=“xx”
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="p[@class='xx']"/>
<xsl:template match="text()[preceding-sibling::*[1][self::p[@class='xx']]]"/>
<xsl:template match="@*|node()">
<xsl:copy><xsl:apply-templates select="@*|node()"/></xsl:copy>
</xsl:template>
</xsl:stylesheet>
它给出:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<h1>Title</h1>
<p>is brutal</p>Xxx
<p>and full of traps</p>Yyy
</root>
标题
是残忍的Xxx
充满陷阱Yyy
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="p[@class='xx']"/>
<xsl:template match="text()[preceding-sibling::*[1][self::p[@class='xx']]]"/>
<xsl:template match="@*|node()">
<xsl:copy><xsl:apply-templates select="@*|node()"/></xsl:copy>
</xsl:template>
</xsl:stylesheet>
<root>
<h1>Title</h1>
<p class="xx">life</p>$
<p>is brutal</p>Xxx
<p>and full of traps</p>Yyy
</root>
<?xml version="1.0" encoding="UTF-8"?>
<root>
<h1>Title</h1>
<p>is brutal</p>Xxx
<p>and full of traps</p>Yyy
</root>