输入XML
<web-inf>
<servlet>
<servlet-name>S1</servlet-name>
<servlet-class>XXXX</servlet-class>
</servlet>
<servlet>
<servlet-name>S2</servlet-name>
<servlet-class>YYYY</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>S1</servlet-name>
<url-pattern>*.xsp</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>S2</servlet-name>
<url-pattern>*.xsp</url-pattern>
</servlet-mapping>
</web-inf>
我想在<zoom><boom>WHAT</boom></zoom>
下添加以下<web-inf>
,即使标签<zoom>
已经不存在。如果<zoom>
标记存在且<boom>
标记为值,那么我不想做任何事情。我正在使用以下转换,但当<zoom>
标记根本不存在时它无效。有什么建议吗?
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="web-inf[not (zoom/boom='WHAT')]/zoom[last()]">
<xsl:copy-of select="."/>
<zoom><boom>WHAT</boom></zoom>
</xsl:template>
答案 0 :(得分:1)
尝试按以下方式更改模板
<xsl:template match="web-inf[not(zoom/boom='WHAT')]">
<xsl:copy>
<zoom>
<boom>WHAT</boom>
</zoom>
<xsl:apply-templates />
</xsl:copy>
</xsl:template>