使用.net进行xslt转换的缩进和文本节点

时间:2012-05-29 11:32:42

标签: .net xslt xslt-1.0

我正在将XML转换为XML,并希望自动缩进结果 所以我正在使用<xsl:output method="xml" indent="yes"/>
当通过.net4编译变换运行时,只要输出上没有文本节点,它就可以正常工作 一旦我添加了一些文本<xsl:text>some text</xsl:text>,整个xml文件的缩进就消失了,结果XML由一些非常长的行组成(形式良好但不可读......)

示例:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" indent="yes"/>

  <xsl:template match="/">
    <Root>
      <!--xsl:text>some test</xsl:text-->
      <Test1/>
      <Test2/>
    </Root>
  </xsl:template>

</xsl:stylesheet>

结果:

<?xml version="1.0" encoding="utf-8"?>
<Root>
  <Test1 />
  <Test2 />
</Root>

<xsl:text>some test</xsl:text>移除评论时的结果:

<?xml version="1.0" encoding="utf-8"?>
<Root>some test<Test1 /><Test2 /></Root>

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

指定的缩进:

<xsl:output indent="yes"/>

<强> affects only the treatment of white-space-only nodes

每当您指定非空白文本节点时,您必须自己为它们提供缩进。