XSLT 1.0剥离空格



我想要一个输出XML文件,该文件在删除guid元素后没有空空间。

  1. 输入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>

  1. 现在我要匹配元素 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>

  1. 输出就是这样。现在有一个我不想要的空白行,而不是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>

  1. 所需结果:

  <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"/>将新的空格注入输出,以实现所需的布局(或接近它的东西)。

最新更新