我想删除XSLT中的标记,但保留所有内容。
我有这个来源:
<?xml version="1.0" encoding="UTF-8"?>
<DOCUMENT>
<div>
<p>foo</p>
<div>we want any divs found in here</div>
<p>we want to keep everything</p>
<p>except the div that follows DOCUMENT</p>
</div>
</DOCUMENT>
想要这个输出:
<?xml version="1.0" encoding="UTF-8"?>
<DOCUMENT>
<p>foo</p>
<div>we want any divs found in here</div>
<p>we want to keep everything</p>
<p>except the div that follows DOCUMENT</p>
</DOCUMENT>
不受欢迎的<div>
始终跟在<DOCUMENT>
之后,这是我想删除的唯一<div>
。
我可以使用此XSLT
执行此操作<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="/DOCUMENT/div">
<xsl:apply-templates select="@*|node()"/>
</xsl:template>
</xsl:stylesheet>
问题:我不想使用身份转换模板执行此操作,因为我正在进行“拉”转换,而不是推送。但我很难找到替代方案。
答案 0 :(得分:3)
那么,当您使用拉式样式表时,这不是简单选择DOCUMENTS / div下所有元素的最简单方法吗?
示例:
<xsl:template match="/">
<DOCUMENT>
<xsl:for-each select="DOCUMENT/div/*">
<xsl:copy-of select="."/>
</xsl:for-each>
</DOCUMENT>
</xsl:template>
尝试这个时,我得到了这个结果:
<DOCUMENT>
<p>foo</p>
<div>we want any divs found in here</div>
<p>we want to keep everything</p>
<p>except the div that follows DOCUMENT</p>
</DOCUMENT>