css - 引用外部 DTD 文件

标签 css xml dtd

我有一个 XML 文件、CSS 文件和一个 DTD 文件。我希望当我对 dtd 文件的引用无效时,即在 xml 文件中将 zzz 添加到名称中,如下所示,当我尝试在谷歌浏览器中打开时会引发错误。我没有收到错误?如果我编辑 dtd 文件并将文本 zzz 添加到单词 Body(如图所示),这同样适用 - 打开 xml 文件时它应该会给我一个错误。我错过了什么吗?所有文件都在同一个目录中。 css 文件完美无缺。

XML 文件

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<?xml-stylesheet type="text/css" href="Style.css"?>
<!DOCTYPE Main SYSTEM "Definitionzzz.dtd">
<Main xmlns:html="http://www.w3.org/1999/xhtml">
<Heading>
Important text  
</Heading>
<Newline></Newline>
<Body>
Important text
</Body>
<Newline></Newline>
<Heading>
Important text  
</Heading>
<Newline></Newline>
<Body>
Important text  
</Body>
<Newline></Newline>
</Main>

DTD 文件

<!--DTD syntax-->
<!DOCTYPE Main
[
<!ELEMENT Main (Heading,Body,Newline,Bullet)>
<!ELEMENT Heading (#PCDATA)>
<!ELEMENT Bodyzzz (#PCDATA)>
<!ELEMENT Newline (#PCDATA)>
<!ELEMENT Bullet (#PCDATA)>
]>

CSS 文件

/* CSS For headings */
Main
{
    border-radius: 5px; 
    padding: 0;
    margin: 0;
    position: absolute; 
    top: 15px;
    left: 15px;
    right: 15px;
    bottom: 15px;
    overflow: auto;
}
Heading
{
    color: #000000;
    font-size: 20pt;
    text-align: center;
    margin-left:15px;
    text-decoration:underline;
}
/* CSS For Body */
Body
{
    color: #000000;
    font-size: 10pt;

}
/* CSS For Bullets */
Bullet
{
    color: #000000;
    font-size: 15pt;
    list-style-type: bullet;
    left: 30px;
    margin-left:30px;
}
/* CSS For Making a new line */
Newline
{
    display:block
}
/* CSS For Weblinks */
a:link:after, a:visited:after
{
content:attr(href); /*displays the actual URL*/
font-size:20pt;
display:block; /*show URLs on a separate line*/
}

最佳答案

除了检查 XML 是 well-formed 之外,Web 浏览器不执行标记验证。 (也就是说,它根本就是 XML)。他们甚至不阅读 DTD。

要验证 XML 文档,您需要一个 XML 验证器。一个笨拙的可能性是 W3C Markup Validator .尽管它在很多方面都是面向 HTML 的,但它以 SGML 和 XML 验证器为基础,您可以在 XML 文档上使用它。您需要将 DTD 放在 Web 服务器上,以便可以通过 URL 引用它,或将其包含在 XML 文档中。请注意,外部 DTD 文件不应包含 <!DOCTYPE Main [...]>。声明的包装器,因为它只属于 DTD 嵌入到 XML 文档中的情况,例如

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<?xml-stylesheet type="text/css" href="Style.css"?>
<!DOCTYPE Main
[
<!ELEMENT Main (Heading,Body,Newline,Bullet)>
<!ELEMENT Heading (#PCDATA)>
<!ELEMENT Bodyzzz (#PCDATA)>
<!ELEMENT Newline (#PCDATA)>
<!ELEMENT Bullet (#PCDATA)>
]>
<Main xmlns:html="http://www.w3.org/1999/xhtml">
...

顺便说一下,即使没有 zzz , 文档无效——您的 DTD 声明了一个结构,该结构具有四个特定元素作为根元素的子元素,按照指定的顺序,没有任何重复。

关于css - 引用外部 DTD 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21893330/

相关文章:

css - 使用响应式设计时可以在标题中交换图像吗?

javascript - 使用 Bulma 和 Angular 5 创建选项卡和调用子组件

c# - 比较 2 个 XML 文档并将更改应用到源文档

java - Android 图像按钮不显示

html - header 中 xhtml 文档类型的语法错误

javascript - 使用动画颜色文本更改前置表格淡入?

jquery - 有条件无事件

c# - 如何从返回的基于 Soap 的 XML 消息中获取元素值

java - 在 XOM 中解析 XHTML 文档时出现 DTD 下载错误

xml - 为什么在使用 DTD 解析此 XML 文件时出现错误 "StartTag: Invalid element name"