我想删除元素之间的所有回车符和换行符。我正在使用 Microsoft Visual Studio。所以,这是一个1.0问题

问题描述 投票:0回答:1

输入XML:

<?xml version="1.0" encoding="utf-8"?>
<section>
  <table>
    <tbody>
      <tr>
        <td>
          <datapoint>First</datapoint>
        </td>
      </tr>
      <tr>
        <td>
          <datapoint>Second</datapoint>
        </td>
      </tr>
    </tbody>
  </table>
</section>

这是我尝试过的:

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

  <xsl:strip-space elements="*" />
  <xsl:preserve-space elements="datapoint" />

  <xsl:output indent="yes" method="xml" version="1.0" omit-xml-declaration="no"/>

  <xsl:template match="text()[contains(.,'&#10;') or contains(.,'&#13;')]"/>

  <!-- Identity template -->
  <xsl:template match="node()|@*">
    <xsl:copy>
      <xsl:apply-templates select="node()|@*"/>
    </xsl:copy>
  </xsl:template>


</xsl:stylesheet>

这就是我所期待的:

预期结果:(一行)

<?xml version="1.0" encoding="utf-8"?><section><table><tbody><tr><td><datapoint>First</datapoint></td></tr><tr><td><datapoint>Second</datapoint></td></tr></tbody></table></section>

实际结果:(无变化)

<?xml version="1.0" encoding="utf-8"?>
<section>
  <table>
    <tbody>
      <tr>
        <td>
          <datapoint>First</datapoint>
        </td>
      </tr>
      <tr>
        <td>
          <datapoint>Second</datapoint>
        </td>
      </tr>
    </tbody>
  </table>
</section>

我想知道我是否要删除换行符和回车符,但 VS 正在将它们放回原处。

xslt-1.0
1个回答
0
投票

怎么样:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no"/>
<xsl:strip-space elements="*"/>

<!-- identity transform -->
<xsl:template match="@*|node()">
    <xsl:copy>
        <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
</xsl:template>

</xsl:stylesheet>
© www.soinside.com 2019 - 2024. All rights reserved.