我的 XML 有问题,我试图在 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>
当它显示第一个详细信息行时,所有内容都在同一行上。我做了一些挖掘,并尝试了以下方法:
- XSLT 文件中的 xml:space="preserve"
- 在 XML 文件中
-
<br />
- 我什至尝试过保持原样。
我正在使用 Microsoft Visual Web Developer 2010。我使用的控件是标准选项卡下的 XML 控件,我使用的语言是 C#(如果有帮助的话)。
如果这个问题已经得到解答,但我还没有找到,请您指出它。
感谢您的帮助。
最佳答案
这种转变:
<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, '
')">
<xsl:value-of select="substring-before($pText, '
')"/>
<br />
<xsl:call-template name="textLines">
<xsl:with-param name="pText" select=
"substring-after($pText, '
')"
/>
</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>
关于c# - 使用 ASP.NET 和 XSLT 在 XML 中显示换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3088632/