【问题标题】:Howto assign HTML semantics to my XML elements to get them rendered in my web browser?如何将 HTML 语义分配给我的 XML 元素以在我的 Web 浏览器中呈现它们?
【发布时间】:2011-09-26 17:28:31
【问题描述】:

我有一个这样的 xml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<todo>
    <list><item>first</item><item>second</item></list>
    <list><item>first</item><item>second</item></list>
</todo>

现在我想在浏览器中查看文件。我想让&lt;list&gt; 元素呈现为&lt;ul&gt; html 元素,&lt;item&gt; 元素呈现为&lt;li&gt; html 元素。我知道我可以使用 xslt 将 xml 转换为 html 文档。但是:有没有办法直接将html语义分配给我列表的元素,例如使用 css(类似于 list{display:ul})或 dtd?

【问题讨论】:

    标签: css xml dtd


    【解决方案1】:

    是的,这是可能的。

    W3C-Website Style Sheets with XML

    您可以使用 CSS 为每个 XML 元素声明浏览器应如何显示它。但是你必须比 HTML 更冗长,因为对于纯 XML,没有预定义的样式。

    在 XML 标头中添加对 CSS 文件的引用:

    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/css" href="todo.css"?>
    <todo>
       <list><item>first</item><item>second</item></list>
       <list><item>first</item><item>second</item></list>
    </todo>
    

    这是一个示例 CSS 文件 (todo.css):

    todo {
      display: block;
    }
    
    list {
      display: block;
      padding-left: 5mm;
      margin-top: 1cm;
    }
    
    item {
      display: list-item;
      list-style-type: circle;
    }
    

    您可以为每个元素定义display 样式(blockinlinenonelist-item)。

    对于display: list-item,您还可以使用样式

    • list-style-image: url(bullet.gif) 标记一个项目符号图标图形
    • list-style-image 具有值 insideoutside
    • list-style-type 具有值 circlediscsquarenone

    【讨论】:

    • 这是我希望的。 等表单元素是否也有显示样式?或 ?
    • 在这里查看所有可能的display 值的列表:w3schools.com/cssref/pr_class_display.asp 有表格选项,但似乎无法呈现表单元素。为此,使用 XSLT 之类的东西可能会更好。
    【解决方案2】:

    不,XML 不是 HTML。如果要将 XML 显示为 HTML,则需要使用 XSLT 对其进行转换。

    【讨论】:

    • 但是有 xhtml。他们如何在不转换的情况下渲染他们的东西? xhtml 是一个特例,硬编码到浏览器中吗?
    • 是的。 (顺便说一句,您可以将样式应用于任意 XML,但无法赋予它 HTML 语义。)
    • XHTML 是遵循更严格的 XML 格式规则的 HTML。当然,这是一个非常笼统的解释;它比这复杂得多。
    • 只是为了确保我理解。当浏览器解析我的 xml 并从 xhtml 命名空间(w3.org/1999/xhtml,例如 ul)中识别出一个元素时,它会用它做一些特殊的事情(将它呈现为一个列表),我无法为我自己的命名空间的元素启用.对吗?
    • 创建自己的 DTD 或命名空间只是为了让您指定哪些内容将被自定义标签封装。示例:&lt;!ELEMENT MYTAG (#PCDATA)&gt;。它不会改变浏览器的呈现方式。浏览器将 XML 显示为 XML,将 HTML 显示为 HTML。如果想让它显示为 HTML,则需要以 HTML 的形式传递给浏览器。
    【解决方案3】:

    您不能将 XML 显示为 HTML。使用一些转换工具 (XSLT)。

    【讨论】:

      猜你喜欢
      • 2018-11-07
      • 2017-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-04
      • 2010-11-22
      • 1970-01-01
      相关资源
      最近更新 更多