java - 使用 XSLT 将 XML 转换为 HTML

标签 java html xml xslt transform

我需要一些帮助,使用 XSLT 将 XML 文件转换为 HTML。我遇到的问题是跳过了 for-each 循环。解析器在“x:imagelist”下找不到任何“file”元素。我究竟做错了什么?我已经尝试过其他帖子的建议,但没有任何运气。

这是 XML 源文件:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<x:imagelist xmlns:x="ext:extractor">
    <file>
        <fileName>2012-04-28 16</fileName>
        <format>jpg</format>
        <width>3264</width>
        <height>1840</height>
        <dateTime>Sat Apr 28 16:49:22 CEST 2012</dateTime>
        <cameraModel>HTC, HTC One X</cameraModel>
        <ISO>100</ISO>
        <exposure>8.0E-4</exposure>
        <fStop>F2</fStop>
    </file>
    <file>
        <fileName>2012-04-28 16</fileName>
        <format>jpg</format>
        <width>3264</width>
        <height>1840</height>
        <dateTime>Sat Apr 28 16:49:24 CEST 2012</dateTime>
        <cameraModel>HTC, HTC One X</cameraModel>
        <ISO>100</ISO>
        <exposure>8.0E-4</exposure>
        <fStop>F2</fStop>
        </file>
    <file>
        <fileName>2012-04-28 16</fileName>
        <format>jpg</format>
        <width>3264</width>
        <height>1840</height>
        <dateTime>Sat Apr 28 16:49:32 CEST 2012</dateTime>
        <cameraModel>HTC, HTC One X</cameraModel>
        <ISO>100</ISO>
        <exposure>6.0E-4</exposure>
        <fStop>F2</fStop>
        </file>
    <location>C:\Users\Serban\Documents\pics</location>
</x:imagelist>

这是 XSL 文件:

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

<html>
<head>
    <title>My Images</title>
    <link rel="stylesheet" type="text/css" href="style_light.css"></link>
</head>

<body>

<div class="everything">
    <div class="headerDiv">
        <h1>MY IMAGES</h1>
        <h3>View your image list online!</h3>
    </div>

    <div class="contentDiv">
    <table class="dataTable">
        <tr class="tableHeader">
            <th>File Name</th><th>Format</th><th>Width</th><th>Height</th><th>Date and Time</th><th>Camera Model</th><th>ISO</th><th>Exposure</th><th>F-Stop</th>
        </tr>

        <xsl:for-each select="x:imagelist/file">
        <tr>
        <td><xsl:value-of select="fileName"></xsl:value-of></td>
        <td><xsl:value-of select="format"></xsl:value-of></td>
        <td><xsl:value-of select="width"></xsl:value-of></td>
        <td><xsl:value-of select="height"></xsl:value-of></td>
        <td><xsl:value-of select="dateTime"></xsl:value-of></td>
        <td><xsl:value-of select="cameraModel"></xsl:value-of></td>
        <td><xsl:value-of select="ISO"></xsl:value-of></td>
        <td><xsl:value-of select="exposure"></xsl:value-of></td>
        <td><xsl:value-of select="fStop"></xsl:value-of></td>
        </tr>
        </xsl:for-each>

    </table>
    </div>
</div>
</body>
</html> 

</xsl:template>
</xsl:stylesheet>

最佳答案

源 XML 和 XSL 转换之间的命名空间不匹配。

在 XML 中,命名空间前缀 x 绑定(bind)到 ext:extractor。在 XSL 中,它绑定(bind)到 http://something//x。更改样式表以匹配 XML,您的转换将按预期工作。

示例:http://xsltransform.net/948Fn5d

关于java - 使用 XSLT 将 XML 转换为 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21683577/

相关文章:

使用参数化类的 Java 泛型问题

html - 如何使用 CSS 应用表格单元格格式

html - Bootstrap NavBar 与中心对齐的元素

javascript - 使用自动刷新将 DIV 标记更改为 Iframe

java - 有没有一种方法可以在 java 中读取 xml 文件而不必定义要读入的类

xml - 使用 ANT 替换整个 XML 标签

xml - 使用正则表达式检索 XML 命名空间

java - EMV 非接触式 - 带 PDOL 的 GPO

java - 无法在 Java 中初始化二维对象数组

java - Intellij Idea 自动创建类的链接 setter