<P1>
标记显示在<web-app>
下方和XML文件中的<servlet>
标记下方。
我想将<servlet>
标记与<servlet-name>
标记为DUMMY,然后在其子标记<P1>
等于B2或B3时删除其下的<p1-name>
标记。我们不想直接用<P1>
<web-app>
标签
我熟悉身份模板和搜索,但很难删除。任何解决方案,以便我将来可以解决类似的问题?
输入XML
<?xml version="1.0" encoding="UTF-8"?>
<web-app metadata-complete="true">
<P1>IGNORE1</P1>
<P1>IGNORE2</P1>
<servlet>
<servlet-name>TEST</servlet-name>
<servlet-class>com.mm.bb.servlet.TEST</servlet-class>
<P1>
<p1-name>A1</p1-name>
<p1-value>A11111</p1-value>
</P1>
<P1>
<p1-name>A2</p1-name>
<p1-value>A22222</p1-value>
</P1>
<P1>
<p1-name>A3</p1-name>
<p1-value/>
</P1>
<P1>
<p1-name>A4</p1-name>
<p1-value/>
</P1>
<P1>
<p1-name>A5</p1-name>
<p1-value/>
</P1>
<junk>1</junk>
</servlet>
<servlet>
<servlet-name>DUMMY</servlet-name>
<servlet-class>com.mm.bb.servlet.DUMMY</servlet-class>
<P1>
<p1-name>B1</p1-name>
<p1-value>B11111</p1-value>
</P1>
<P1>
<p1-name>B2</p1-name>
<p1-value>A22222</p1-value>
</P1>
<P1>
<p1-name>B3</p1-name>
<p1-value/>
</P1>
<P1>
<p1-name>B4</p1-name>
<p1-value/>
</P1>
<P1>
<p1-name>B5</p1-name>
<p1-value/>
</P1>
<junk>1333</junk>
</servlet>
<servlet>
<servlet-name>SAMMY</servlet-name>
<servlet-class>com.mm.bb.servlet.SAMMY</servlet-class>
<P1>
<p1-name>C1</p1-name>
<p1-value>B11111</p1-value>
</P1>
<P1>
<p1-name>C2</p1-name>
<p1-value>A22222</p1-value>
</P1>
<P1>
<p1-name>C3</p1-name>
<p1-value/>
</P1>
<P1>
<p1-name>C4</p1-name>
<p1-value/>
</P1>
<P1>
<p1-name>C5</p1-name>
<p1-value/>
</P1>
<junk>12313</junk>
</servlet>
<D>
<D1>
<D11>admin</D11>
</D1>
<D2>
<D21>XX</D21>
</D2>
</D>
<E>
<E1>Yo</E1>
<E2>Hello</E2>
</E>
</web-app>
O / P XML应该如下所示,<P1>
下<servlet>
标记为<servlet-name>
作为DUMMY被删除,因为<p1-name>
是B2或B3。
<?xml version="1.0" encoding="UTF-8"?>
<web-app metadata-complete="true">
<P1>IGNORE1</P1>
<P1>IGNORE2</P1>
<servlet>
<servlet-name>TEST</servlet-name>
<servlet-class>com.mm.bb.servlet.TEST</servlet-class>
<P1>
<p1-name>A1</p1-name>
<p1-value>A11111</p1-value>
</P1>
<P1>
<p1-name>A2</p1-name>
<p1-value>A22222</p1-value>
</P1>
<P1>
<p1-name>A3</p1-name>
<p1-value/>
</P1>
<P1>
<p1-name>A4</p1-name>
<p1-value/>
</P1>
<P1>
<p1-name>A5</p1-name>
<p1-value/>
</P1>
<junk>1</junk>
</servlet>
<servlet>
<servlet-name>DUMMY</servlet-name>
<servlet-class>com.mm.bb.servlet.DUMMY</servlet-class>
<P1>
<p1-name>B1</p1-name>
<p1-value>B11111</p1-value>
</P1>
<P1>
<p1-name>B4</p1-name>
<p1-value/>
</P1>
<P1>
<p1-name>B5</p1-name>
<p1-value/>
</P1>
<junk>1333</junk>
</servlet>
<servlet>
<servlet-name>SAMMY</servlet-name>
<servlet-class>com.mm.bb.servlet.SAMMY</servlet-class>
<P1>
<p1-name>C1</p1-name>
<p1-value>B11111</p1-value>
</P1>
<P1>
<p1-name>C2</p1-name>
<p1-value>A22222</p1-value>
</P1>
<P1>
<p1-name>C3</p1-name>
<p1-value/>
</P1>
<P1>
<p1-name>C4</p1-name>
<p1-value/>
</P1>
<P1>
<p1-name>C5</p1-name>
<p1-value/>
</P1>
<junk>12313</junk>
</servlet>
<D>
<D1>
<D11>admin</D11>
</D1>
<D2>
<D21>XX</D21>
</D2>
</D>
<E>
<E1>Yo</E1>
<E2>Hello</E2>
</E>
</web-app>
答案 0 :(得分:2)
对要删除的元素使用标识转换和空模板:
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="servlet[servlet-name = 'DUMMY']/P1[p1-name = ('B2', 'B3')]"/>
在http://xsltransform.hikmatu.com/nbUY4ki我得到输出
<?xml version="1.0" encoding="UTF-8"?>
<web-app metadata-complete="true">
<P1>IGNORE1</P1>
<P1>IGNORE2</P1>
<servlet>
<servlet-name>TEST</servlet-name>
<servlet-class>com.mm.bb.servlet.TEST</servlet-class>
<P1>
<p1-name>A1</p1-name>
<p1-value>A11111</p1-value>
</P1>
<P1>
<p1-name>A2</p1-name>
<p1-value>A22222</p1-value>
</P1>
<P1>
<p1-name>A3</p1-name>
<p1-value/>
</P1>
<P1>
<p1-name>A4</p1-name>
<p1-value/>
</P1>
<P1>
<p1-name>A5</p1-name>
<p1-value/>
</P1>
<junk>1</junk>
</servlet>
<servlet>
<servlet-name>DUMMY</servlet-name>
<servlet-class>com.mm.bb.servlet.DUMMY</servlet-class>
<P1>
<p1-name>B1</p1-name>
<p1-value>B11111</p1-value>
</P1>
<P1>
<p1-name>B4</p1-name>
<p1-value/>
</P1>
<P1>
<p1-name>B5</p1-name>
<p1-value/>
</P1>
<junk>1333</junk>
</servlet>
<servlet>
<servlet-name>SAMMY</servlet-name>
<servlet-class>com.mm.bb.servlet.SAMMY</servlet-class>
<P1>
<p1-name>C1</p1-name>
<p1-value>B11111</p1-value>
</P1>
<P1>
<p1-name>C2</p1-name>
<p1-value>A22222</p1-value>
</P1>
<P1>
<p1-name>C3</p1-name>
<p1-value/>
</P1>
<P1>
<p1-name>C4</p1-name>
<p1-value/>
</P1>
<P1>
<p1-name>C5</p1-name>
<p1-value/>
</P1>
<junk>12313</junk>
</servlet>
<D>
<D1>
<D11>admin</D11>
</D1>
<D2>
<D21>XX</D21>
</D2>
</D>
<E>
<E1>Yo</E1>
<E2>Hello</E2>
</E>
</web-app>