XML + XSL 到 XSLT HTML

XML + XSL to XSLT for an HTML

对不起,如果我的 Post 不会那么好,我不善于表达自己。

我想要的:

我有一个 XML 和一个 XSL 数据,我想将其转换为 HTML 的 XSLT。 作为转换,我使用 Altova XMLSpy 和这个网页:http://www.freeformatter.com/xsl-transformer.html

我得到了什么:

我的XML:

<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="Style.xsl"?>
<Configuration>
 <Environment>
  ...
 </Environment>
  <Configurations>
  ...
  <Config>
  ...  
  </Config>
 </Configurations>
</Configuration>

我的 XSL:

<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
        <html>
            <body>
                <table border="4">
                    <xsl:apply-templates select="Configuration"/>
                </table>
            </body>
        </html>&gt;
</xsl:template>
    <xsl:template match="Environment">
        <tr>Environment</tr>
        <br/>
        <td> <th>Text</th>
    <xsl:value-of select="Environment"/>
        </td>
       <td> <th>Text2</th>
    <xsl:value-of select="config"/>
        </td>
           ...
           ... 
</xsl:template>
</xsl:stylesheet>

这只是我如何构建它的一个示例。

到目前为止一切都很好,但是随后:

问题:

如果我在 Firefox 中启动 XML,现在一切正常。如果我在 IE 或 Chrome 中启动它,我只会得到 XML 数据而不是 Table。 试图在 XSLT 中转换它给我这个错误: 无法对您的 XML 文件执行 XSL 转换。空

希望你能帮助我。我是 XML/XSl/XSLT 的初学者,但我希望我的 post 能为您提供所需的信息。

问候

最大

您犯了一个非常常见的初学者错误:

<xsl:template match="Environment">
   <tr>Environment</tr>...
   <xsl:value-of select="Environment"/>

在此模板中,上下文节点是一个环境元素,您的 xsl:value-of 指令正在寻找该元素的名称为 Environment 的子元素。但是您的环境元素(我假设)没有任何环境子元素。你应该写的(我假设)是

<xsl:value-of select="."/>

但是,我不认为这是全部问题。它没有说明所描述的所有症状。您实际上犯了另一个初学者的错误,即试图在浏览器中 运行 您的 XSLT 代码,然后再在其他地方进行测试。基于浏览器的 XSLT 引擎提供糟糕的诊断(即使您使用类似 Firebug 的东西)。让您的代码首先在桌面环境中运行 - 最好是像 oXygen 这样的 XML IDE。然后你会得到一个关于错误的合理解释。

您好,这是您的代码的修改版本。

XSL 模板匹配必须匹配您希望应用模板的 XML 节点。

<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
  <xsl:stylesheet version="2.0">
    <xsl:template match="Configuration">
      <html>
        <body>
          <table border="4">
            <xsl:apply-templates select="Environment"/>
          </table>
          <table border="4">
            <xsl:apply-templates select="Configurations"/>
          </table>
        </body>
      </html>
    </xsl:template>
    <xsl:template match="Environment">
      <tr>
        <th>
          <xsl:value-of select="name()"/>
        </th>
      </tr>
      <tr>
        <td>
          <xsl:value-of select="."/>
        </td>
      </tr>
    </xsl:template>
    <xsl:template match="Configurations">
      <tr>
        <th>
          <xsl:value-of select="name()"/>
        </th>
      </tr>
      <tr>
        <td>
          <xsl:apply-templates select="Config"/>
        </td>
      </tr>
    </xsl:template>
    <xsl:template match="Config">
      <tr>
        <th>
          <xsl:value-of select="name()"/>
        </th>
      </tr>
      <tr>
        <td>
          <xsl:value-of select="."/>
        </td>
      </tr>
    </xsl:template>
  </xsl:stylesheet>