English 中文(简体)
如何制止在Xslt转变之后出现的无意的白色空间
原标题:How to stop unwanted whitespace appearing in output following Xslt transformation
  • 时间:2009-09-23 16:23:14
  •  标签:

I m利用VS2008撰写和测试轴变。 产出中包含不想要的白色空间,这一简化例子说明了这一点:

投入:

<?xml version="1.0" encoding="utf-8" ?>
<envelope>
  <header>
    <head id="1" text="Heading1"/>
  </header>
  <body>
    <message>
      <items>
        <item id="1" Color="Red"/>
        <item id="2" Color="Green"/>
        <item id="3" Color="Blue"/>
        <item id="4" Color="Purple"/>
      </items>
    </message>
  </body>
</envelope>

转变:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
  <xsl:output method="xml" indent="yes"/>

  <xsl:template match="message">
    <xsl:element name="Colors">
      <xsl:apply-templates select="items/item" />
    </xsl:element>
  </xsl:template>

  <xsl:template match="items/item">
    <xsl:element name="Color">
      <xsl:value-of select="@Color"/>
    </xsl:element>
  </xsl:template>

</xsl:stylesheet>

产出:

<?xml version="1.0" encoding="utf-8"?>




        <Colors><Color>Red</Color><Color>Green</Color><Color>Blue</Color><Color>Purple</Color></Colors>

虽然在产出中难以显示,但似乎正在发生的是投入档案的白色空间,甚至在我的模板没有匹配时,也被送往产出档案。 这是我喜欢的,并期望产出能够看一看:

<?xml version="1.0" encoding="utf-8"?>
<Colors>
  <Color>Red</Color>
  <Color>Green</Color>
  <Color>Blue</Color>
  <Color>Purple</Color>
</Colors>

这是可能的吗? 现在我可能必须做的是将结果装入Xml文件,然后再次将其印成格式。

最佳回答

为了消除不想要的白色空间,添加这一模板应当做到:

<xsl:template match="text()"/>

它是指“全文”。

关于前印,<代码>indent 在您的<代码>output要素上应发挥作用。 我不敢肯定为什么忽视它,一切照旧。 或许是微软问题?

问题回答

暂无回答




相关问题
热门标签