Xml 如何在元素中保留空白';XSLT中的开始标记

Xml 如何在元素中保留空白';XSLT中的开始标记,xml,xslt,whitespace,xml-formatting,xml-attribute,Xml,Xslt,Whitespace,Xml Formatting,Xml Attribute,为了避免将敏感信息提交给SCM存储库,我编写了一个XSL样式表,用于从ASP.NETWeb.config文件中删除连接字符串密码。它实现了我删除密码的目标,但也会影响元素开头标记中的空格。如果可能的话,我想保留这个空白 例如,给定以下Web.config: <configuration> <connectionStrings> <add name="ApplicationServices" connectionString="Host=

为了避免将敏感信息提交给SCM存储库,我编写了一个XSL样式表,用于从ASP.NET
Web.config
文件中删除连接字符串密码。它实现了我删除密码的目标,但也会影响元素开头标记中的空格。如果可能的话,我想保留这个空白

例如,给定以下
Web.config

<configuration>
  <connectionStrings>
    <add name="ApplicationServices"
         connectionString="Host=localhost;Username=dev;Password='sensitive password';Database=database"
         providerName="MySql.Data.MySqlClient" />
  </connectionStrings>
  <!-- ... -->

我能够将其转换为:

<configuration>
  <connectionStrings>
    <add name="ApplicationServices" connectionString="Host=localhost;Username=dev;Password=********;Database=database" providerName="MySql.Data.MySqlClient" />
  </connectionStrings>
  <!-- ... -->
<configuration>
  <connectionStrings>
    <add name="ApplicationServices"
         connectionString="Host=localhost;Username=dev;Password=********;Database=database"
         providerName="MySql.Data.MySqlClient" />
  </connectionStrings>
  <!-- ... -->

但我想将其转化为:

<configuration>
  <connectionStrings>
    <add name="ApplicationServices" connectionString="Host=localhost;Username=dev;Password=********;Database=database" providerName="MySql.Data.MySqlClient" />
  </connectionStrings>
  <!-- ... -->
<configuration>
  <connectionStrings>
    <add name="ApplicationServices"
         connectionString="Host=localhost;Username=dev;Password=********;Database=database"
         providerName="MySql.Data.MySqlClient" />
  </connectionStrings>
  <!-- ... -->


这是可能的吗?

标记中的空格不重要,处理器可以将其标准化为单个空格,并且在标准工具中无法控制。您也无法控制属性的顺序或用于引用的字符(quot vs apos)。字符实体也可以转换为等效表示。您可以在XSLT中找到自定义序列化程序,这些序列化程序是您想要的,但不是XSLT

注意,如果需要,元素内容中的空白可以部分保留(但我不认为这是您的要求的一部分)

另见:


请参阅有关空白的非常广泛的XSLT常见问题解答:

这不是XSLT问题,而是XML解析和表示:我认为DOM和Infoset不会将属性“标记”之间的空白数据保留到元素“标记”中。。。