我正在从表格中获取信息:
<xsl:template match="table1">
<xsl:element name="ApplicantAddress">
<xsl:apply-templates select="@* | node()"/>
</xsl:element>
</xsl:template>
我想确保我不包含该表中的字段。这可能吗?
答案 0 :(得分:2)
推送风格:
<xsl:template match="table1">
<ApplicantAddress>
<xsl:apply-templates select="@* | node()[not(self::unwanted-element)]"/>
</ApplicantAddress>
</xsl:template>
拉风格:
<xsl:template match="table1">
<ApplicantAddress>
<xsl:apply-templates select="@* | node()"/>
</ApplicantAddress>
</xsl:template>
<xsl:template match="table1/unwanted-element"/>
答案 1 :(得分:0)
此转化:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="table1">
<ApplicantAddress>
<xsl:apply-templates select="node()|@*"/>
</ApplicantAddress>
</xsl:template>
<xsl:template match="c"/>
</xsl:stylesheet>
应用于此XML文档(您错过了提供):
<table1>
<a/>
<b/>
<c/>
<d/>
</table1>
生成想要的结果(元素b
未复制):
<ApplicantAddress>
<a />
<b />
<d />
</ApplicantAddress>
解释:使用和覆盖identity rule /模板是最基本的XSLT设计模式。在这里,我们使用匹配c
的空体模板覆盖标识规则,这可以确保忽略此元素(“已删除”/未复制)。