【问题标题】:HTML: All XML data values show up unformatted below formated documentHTML:所有 XML 数据值在格式化文档下方显示为未格式化
【发布时间】:2013-11-22 16:33:49
【问题描述】:

这里非常新手(不到一周)。

我有一个从 Altova StyleVision 创建的样式表,我已经对其进行了修改,因为它在 StyleVision 之外的浏览器中不起作用。关于“变量或参数 'altova:table' 在同一范围内重复。”

无论如何,它现在工作得很好,除了一件事。在格式化视图的末尾,所有的 XML 数据值都在无格式的情况下再次重复,只是连续喷出一行。

在这里发帖之前我已经搜索并搜索了一个答案,但之前似乎没有人遇到过这个问题。

代码都在一个 HTML 标签内,看起来像这样:

  <BODY>
    <span style="font-family:Arial; font-size:18pt; font-weight:bold; vertical-align:middle; ">
      <xsl:text>ENGINEERING CHANGE ORDER</xsl:text>
    </span>
     .............
      <br/>
      <span style="font-family:Arial; font-size:10pt; font-weight:bold; ">
        <xsl:text>Summary:</xsl:text>
      </span>
      <pre>
        <xsl:for-each select="Description">
          <span style="font-family:Arial; font-size:10pt; ">
            <xsl:apply-templates/>
          </span>
        </xsl:for-each>
      </pre>
      <hr/>
    </xsl:for-each>
    <xsl:apply-templates/>
  </BODY>

【问题讨论】:

  • 这看起来像 XSLT。它应该通过 XSLT 处理器提供。
  • 你创造了一个“怪物”。它不再是纯 HTML,也不再是 XSLT。包含“xsl:”的所有内容都是 XSLT,不会被浏览器“处理”。

标签: html xml xslt-1.0


【解决方案1】:

目前还不是很清楚您要在这里实现什么。重现您的问题,我以为您指的是输出是一个连续的字符串?

如果是这样,您正在使用 HTML 文档中不存在的命名空间和属性。一种更常见的方法是创建实际的样式表。一个 Sample.xsl 文件。保持您提供的相对相同的格式。这是一个 XSL 文件,您可以使用 DATA.xml 文件对其进行解析。

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xml:lang="en" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
    <html lang="en">
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"  />
            <title>
            <xsl:value-of select="'Altova StyleVision'"/>
            </title>
        </head>
        <BODY>
            <span style="font-family:Arial; font-size:18pt; font-weight:bold; vertical-align:middle; ">
                <xsl:text>ENGINEERING CHANGE ORDER</xsl:text>
            </span>
            .............
            <br/>
            <span style="font-family:Arial; font-size:10pt; font-weight:bold; ">
                <xsl:text>Summary:</xsl:text>
            </span>
            <pre>
                <span style="font-family:Arial; font-size:10pt; ">
                    <xsl:for-each select="document('DATA.xml')/profile/description">
                        <xsl:apply-templates select="value"/>
                        <xsl:if test="position() != last()">
                            <xsl:text disable-output-escaping="yes">
                                <![CDATA[<br />]]>
                            </xsl:text>
                        </xsl:if>
                    </xsl:for-each>
                </span>
            </pre>
            <hr/>
        </BODY>
    </html>
</xsl:template>

我的示例 DATA.xml 包含:

<?xml version="1.0" encoding="UTF-8"?>
<profile>
    <description>
        <value>hi</value>
    </description>
    <description>
        <value>world</value>
    </description>
    <description>
        <value>i mean</value>
    </description>
    <description>
        <value>hello</value>
    </description>
    <description>
        <value>world</value>
    </description>
</profile>

如果您使用的是基于 Mac 或 Linux 的操作系统。您可以打开终端并输入 xsltproc sample.xsl DATA.xml &gt; index.html 现在它将解析一个 HTML 文件供您以 HTML 格式查看。如果您使用的是 Windows 机器,请转到此处:http://xmlsoft.org/XSLT/xsltproc2.html 并下载 xsltproc 的副本,以便解析该内容。

如果您有自己创建的 example.xml 的副本,并且想要使用 XSL 显示数据。这是一个很好的方法。尤其是当您的 XML 文件有很多内容时。

【讨论】:

  • 我发现我有很多东西要学。让我特别困惑的是,我基本上被告知这不应该按原样工作,但 XML 数据值在 Internet Explorer 和 Firefox 中很好地显示。只是 xml 数据值在文档末尾没有样式表格式重复。泰勒,你提供了最详细的信息,谢谢。我需要做的是回到起点,了解更多关于 XSLT 和 HTML 和解析器等的知识。我希望能找到一个解决方案的捷径。
  • 不幸的是,生活中的很多事情都没有捷径可走。如果您的 XML 数据值重复,很可能是循环出错了; 。 apply-templates 和 for-each 基本上都是循环。您的嵌套循环,这可能是创建重复值的原因。摆弄代码,学习它的唯一方法就是玩它,我以 XML/XSL 编码为生,但我还有很多东西要学。如果您需要一点帮助,您可以在这篇文章中添加更多内容。总是乐于提供帮助。
  • 顺便说一下,XML 数据几乎总是能很好地显示,因为它只是原始数据。您的 XSL 使它“时尚”。将 XML 视为只是数据。 XSL 作为 HTML 和 CSS 组合的样式,XSLT 作为 XML 和 XSL 转换为您想要的任何格式。伟大的开始是从 W3Schools 开始的。更深入地需要一本书或只是在网上寻找其他人如何编码。如果您可以选择获取一些 XML 和 XSL 代码,那么对其进行修改将有助于学习过程。与许多其他语言相比,它实际上是一种相当简单的样式语言。对简历的重要补充,竖起大拇指!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-21
  • 2020-09-02
  • 2011-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多