XSLT 1.0去除空格

时间:2019-03-15 08:35:23

标签: xml xslt code-formatting

我想要一个输出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>

我认为我还必须匹配格式字符才能获得所需的结果。

1 个答案:

答案 0 :(得分:1)

将@AmrendraKumar和@TimC中的注释复制为答案:在像这样处理面向数据的XML时使用 <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>3.0-alpha-1</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> ,其中元素之间的空格没有意义。然后使用<xsl:strip-space elements="*"/>将新的空格注入到输出中,以实现所需的布局(或其附近)。