java - 将通用 XML 呈现为 HTML

标签 java html xml rendering

我已经编写了一个 Web 服务(用 Java),它会生成一个(相当复杂的)XML 文档。

如果需要,我需要返回文档的 HTML 呈现。不必很花哨,用一些基本格式(例如正确缩进元素)显示 XML 源就可以了。

我该怎么做?

最佳答案

我同意,XSL 将是最好的方法。如果您想将其转换为实际上看起来像 XML 的内容,但只是在 HTML 中,您可以使用如下内容:

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

    <!-- Evaluate Attributes -->
    <xsl:template match="@*">
        <span class="attribute">
            <span class="name">
                <xsl:value-of select="name()"/>
            </span>="<span class="value"><xsl:value-of select="." /></span>"
        </span>
    </xsl:template>


    <!-- Evaluate Elements -->
    <xsl:template match="*" priority="10">
        <div class="element">
            <!-- First, create the opening tag with the attributes -->
            &lt;<span class="name"><xsl:value-of select="name()"/></span><xsl:apply-templates select="@*"/>&gt;
            <!-- Then, add children -->
            <xsl:apply-templates select="node()"/>
            <!-- Finally, add the closing tag -->
            &lt;/<span class="name"><xsl:value-of select="name()"/></span>&gt;
        </div>
    </xsl:template>


    <!-- Just copy everything else (text, comments, etc.) -->
    <xsl:template match="node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>

并添加一些 CSS:

.element{margin-left:4em;font-size:14px;}
.element .name{color:blue;}
.attribute{margin-left:8px}

更新:

<!-- Root node -->
<xsl:template match="/">
    <div class="element">
        &lt;<span class="name"><xsl:value-of select="name()"/></span><xsl:apply-templates select="@*"/>
        <!-- Grab all namespaces and declare them.  distinct-values() is XPath 2.0, however. -->
        <xsl:for-each select="distinct-values(//namespace::*)">
            xmlns:<xsl:value-of select="name()" />="<xsl:value-of select="." />"
        </xsl:for-each>
        &gt;
        <xsl:apply-templates select="node()"/>
        &lt;/<span class="name"><xsl:value-of select="name()"/></span>&gt;
    </div>
</xsl:template>

关于java - 将通用 XML 呈现为 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9154171/

相关文章:

Java VM 由于 BlockingQueue.take() 未关闭

java - 如何查看已安装的 Swing 应用程序控制台/日志?

java - Android 通知标志需要管道吗?

java - Java中如何通过抽象类访问子类?

xml - 具有给定子值的第二个元素的 XPath?

java - 简单的框架。集合中可以保留空值吗?

java - Java 中的 Try/Catch 异常问题

javascript - 更改类与选择字段选项的属性匹配的文本值范围

php - HTML - 从 MySQL 数据库中获取 LONGTEXT 字符串中的行数

javascript - 为什么这个javascript效果不能在ie7上使用?