2010-06-21 16 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