XSLT保留段落格式

时间:2013-06-14 14:21:46

标签: xslt

当我的数据以正确的格式从数据库导出时。当我把它放入我的XSLT样式表时,它将所有内容都放在一个平面线上。有没有办法来解决这个问题?谢谢你的帮助。

样式表

    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:user="urn:user-scripts" xmlns:aras="http://www.aras.com">
      <xsl:output method="html" omit-xml-declaration="yes" standalone="yes" indent="yes" cdata-section-elements="script msxsl:script"></xsl:output>
      <xsl:template match="Item[@type='Order']">
        <html>
          <body>
    <!-- Implementation Notes -->
            <table class="row">
              <tr>
                <td class="section" width="100%">
                  <b>Implementation Notes</b>
                </td>
          </tr>
            <tr>
                <td class="fieldValue">
                  <xsl:value-of select="implementation_notes"></xsl:value-of>
                </td>
            </tr>
         </table>
            <table class="row" height="10">
              <tr>
                <td></td>
              </tr>
            </table>
       </body>
      </html>
     </xsl:template>
     </xsl:stylesheet>

数据

    <?xml version="1.0" encoding="utf-8"?>
    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
      <SOAP-ENV:Body>
        <Result>
          <Item type="Order">
            <implementation_notes>New Order.
    1. Instructions A
    1.1 Instructions A.1
    2. Instructions B
    2.1 Instructions B.1
    3. Instructions C
    3.1 Instructions C.1
    </implementation_notes>
         </Item>
        </Result>
      </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>

2 个答案:

答案 0 :(得分:1)

一种简单的方法

替换:

              <xsl:value-of select="implementation_notes"></xsl:value-of>

              <pre><xsl:value-of select="implementation_notes"/></pre>

请注意

这根本不是XSLT问题。它是一个 HTML 。观察到的浏览器行为是由于浏览器将一组空白字符表示为单个空格的规则。

答案 1 :(得分:0)

似乎您希望将implementation_notes的内容作为表中的行。

我认为你应该重新考虑你的数据库输出,并在每一行周围都有一个xml标签 如果这是不可能的,并且您希望将文本与xslt 1.0拆分为“行尾”,则必须使用递归模板调用拆分文本。

如果不需要中继表行,请在您的内容周围放置一个hmtl <pre>..</pre>

 <pre>
    <xsl:value-of select="implementation_notes"/>
 </pre>