我想要一个输出XML文件,该文件在删除guid
元素后没有空空间。
- 输入XML文件的格式如下:
<FilterDefinition xmlns="com.cisag.sys.tools.bi.obj.FilterDefinition">
<guid>72312782178912782380210</guid>
<name>REI0101</name>
<description>Partner</description>
<object>com.cisag.app.general.obj.Partner</object>
<nlsMode>SINGLE_LANGUAGE</nlsMode>
<dateTimeMode>COMPACT</dateTimeMode>
<exportTransformationURI/>
<importTransformationURI/>
<logLevel>USER</logLevel>
<logFolder/>
<authorizationMode>NO_CHECK</authorizationMode>
<filter>677869876769097980</filter>
</FilterDefinition>
- 现在我要匹配元素
guid
:
<xsl:template match="/">
<xsl:apply-templates select="$FilterNode/*"/>
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="guid"></xsl:template>
- 输出就是这样。现在有一个我不想要的空白行,而不是
guid
元素:
<FilterDefinition xmlns="com.cisag.sys.tools.bi.obj.FilterDefinition">
<name>REI0101</name>
<description>Partner</description>
<object>com.cisag.app.general.obj.Partner</object>
<nlsMode>SINGLE_LANGUAGE</nlsMode>
<dateTimeMode>COMPACT</dateTimeMode>
<exportTransformationURI/>
<importTransformationURI/>
<logLevel>USER</logLevel>
<logFolder/>
<authorizationMode>NO_CHECK</authorizationMode>
<filter>677869876769097980</filter>
</FilterDefinition>
- 所需结果:
<FilterDefinition xmlns="com.cisag.sys.tools.bi.obj.FilterDefinition">
<name>REI0101</name>
<description>Partner</description>
<object>com.cisag.app.general.obj.Partner</object>
<nlsMode>SINGLE_LANGUAGE</nlsMode>
<dateTimeMode>COMPACT</dateTimeMode>
<exportTransformationURI/>
<importTransformationURI/>
<logLevel>USER</logLevel>
<logFolder/>
<authorizationMode>NO_CHECK</authorizationMode>
<filter>677869876769097980</filter>
</FilterDefinition>
我认为我还必须匹配格式的字符才能获得所需的结果。
在处理面向数据的XML时,复制@amrendrakumar和@TIMC的注释作为答案:使用 <xsl:strip-space elements="*"/>
,其中元素之间的白色空间没有显着性。然后使用<xsl:output indent="yes"/>
将新的空格注入输出,以实现所需的布局(或接近它的东西)。