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>>
</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>
对不起,如果我的 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>>
</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>