使用 ASP.NET 和 XSLT 在 XML 中显示换行符

发布于 2024-09-06 04:22:14 字数 1524 浏览 5 评论 0 原文

我的 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>

当它显示第一个详细信息行时,所有内容都在同一行上。我做了一些挖掘,并尝试了以下操作:

  1. xml:space="preserve" in the XSLT file
  2. in the XML file

  3. >
  4. 我什至尝试将其保留为这是。

我正在使用 Microsoft Visual Web Developer 2010。我使用的控件是标准选项卡下的 XML 控件,我使用的语言是 C#(如果有帮助的话)。

如果这个问题已经得到解答,但我还没有找到,请您指出它。

感谢您的帮助。

I have a problem with my XML that I am trying to display on my ASP.NET page that I could do with some help with.
What I would like to do is display it on a multi-line so I have an XML file that looks like this:

<?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>

And I have an XSLT file that looks like this:

<?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>

When it displays the first detail line everything is on the same line. I've done some digging about and I have tried the following:

  1. xml:space="preserve" in the XSLT file
  2. in the XML file
  3. <br />
  4. I've even tried leaving it as it is.

I am using Microsoft Visual Web Developer 2010. The control I am using is the XML control under the standard tab, and the language I am using is C#, if that helps any.

If this has already been answered and I haven't found it yet can you please point me at it.

Thanks for your help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

兰花执着 2024-09-13 04:22:14

此转换

<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>

This transformation:

<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>

when applied on the provided XML document:

<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>

produces the wanted, correct result:

<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>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文