HTML:所有XML数据值都显示在格式化文档下方,且未格式化



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

我有一个从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>

这里不太清楚您想要实现什么。重新创建你的问题,我想你指的是输出是一个连续的字符串?

如果是这样,那么您使用的是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 > index.html现在,它将解析一个HTML文件,供您以HTML形式查看。如果您使用的是Windows计算机,请转到此处:http://xmlsoft.org/XSLT/xsltproc2.html并下载xsltproc的副本,以便解析该内容。

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

相关内容

  • 没有找到相关文章

最新更新