2010-06-21 15 views
2

我嘗試在我的ASP.NET頁面上顯示我的XML,但我可以藉助一些幫助來解決該問題。 我想這樣做是顯示它在多線,所以我有一個看起來像這樣的XML文件:使用帶XSLT的ASP.NET顯示XML中的換行符

<?xml version="1.0"?> 
<?xml-stylesheet type="text/xsl" href="News.xslt" ?> 
<newslist> 
    <news> 
    <date>20th June 2010</date> 
    <detail>Detail line 1. 
      Detail Line 2</detail> 
    </news> 
    <news> 
    <date>18th June 2010</date> 
    <detail>Some more details</detail> 
    </news> 
</newslist> 

而且我有一個XSLT文件看起來像這樣:

<?xml version="1.0"?> 
<xsl:stylesheet version="1.0" 
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > 

    <xsl:template match="/"> 
    <HTML> 
     <BODY> 
     <xsl:for-each select="newslist/news"> 
      <xsl:sort select="date" order="descending"/> 
      <br /> 
      <h3><xsl:value-of select="date" /></h3> 
      <ul> 
      <p><xsl:value-of select="detail" /></p> 
      </ul> 
     </xsl:for-each> 
     </BODY> 
    </HTML> 
    </xsl:template> 
</xsl:stylesheet> 

當它顯示第一條明細行時,所有行都在同一行上。我做過的一些挖掘,我曾嘗試以下:

  1. XML:空間= XML文件中的「保存」在XSLT文件
  2. <br />
  3. 我甚至試過保持原樣。

我正在使用Microsoft Visual Web Developer 2010.我使用的控件是標準選項卡下的XML控件,而且我使用的語言是C#,如果有幫助的話。

如果這個問題已經得到解答,我還沒有找到它,請你指點一下。

感謝您的幫助。

+0

您是否已將
添加到XML源文件或XSLT文件中?您應該可以將hte
放入XML源文件中,不會有任何問題。 – 2010-06-21 21:38:04

+0

好問題(+1)。查看我的答案獲得完整的解決方案。 – 2010-06-21 21:48:11

回答

3

這種轉變

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > 

    <xsl:template match="/"> 
    <HTML> 
     <BODY> 
     <xsl:for-each select="newslist/news"> 
      <xsl:sort select="date" order="descending"/> 
      <br /> 
      <h3><xsl:value-of select="date" /></h3> 
      <ul> 
      <p><xsl:apply-templates select="detail"/></p> 
      </ul> 
     </xsl:for-each> 
     </BODY> 
    </HTML> 
    </xsl:template> 

    <xsl:template match="detail/text()" name="textLines"> 
    <xsl:param name="pText" select="."/> 

    <xsl:choose> 
     <xsl:when test="contains($pText, '&#xA;')"> 
      <xsl:value-of select="substring-before($pText, '&#xA;')"/> 
      <br /> 
      <xsl:call-template name="textLines"> 
      <xsl:with-param name="pText" select= 
      "substring-after($pText, '&#xA;')" 
      /> 
      </xsl:call-template> 
     </xsl:when> 
     <xsl:otherwise><xsl:value-of select="$pText"/></xsl:otherwise> 
    </xsl:choose> 
    </xsl:template> 
</xsl:stylesheet> 

時所提供的XML文檔應用:

<newslist> 
    <news> 
    <date>20th June 2010</date> 
    <detail>Detail line 1. 
      Detail Line 2</detail> 
    </news> 
    <news> 
    <date>18th June 2010</date> 
    <detail>Some more details</detail> 
    </news> 
</newslist> 

產生想要的,正確的結果

<HTML> 
    <BODY><br><h3>20th June 2010</h3> 
     <ul> 
      <p>Detail line 1.<br>   Detail Line 2</p> 
     </ul><br><h3>18th June 2010</h3> 
     <ul> 
      <p>Some more details</p> 
     </ul> 
    </BODY> 
</HTML> 
+0

感謝您的支持。 – lardymonkey 2010-06-22 19:40:15