"旧"HTML/XHTML标准具有为其定义的DTD(文档类型定义):
HTML 4.01 http://www.w3.org/TR/html401/sgml/dtd.html
XHTML 1.0 http://www.w3.org/TR/xhtml1/dtds.html#a_dtd_XHTML-1.0-Strict
此DTD指定嵌套元素的规则 - "哪些类型的元素可能出现在哪些类型的元素中".我在这里为XHTML 1.0制作了一个图表(抱歉,我不再拥有该资源)
我想用新版本更新该图表,该版本还包括新的HTML5元素.但是,似乎没有HTML5 DTD.似乎嵌套规则是由HTML5中定义的各种内容模型定义的.
所以没有DTD,对吗?
后续问题: HTML5中是否有没有DTD的原因?DTD是为所有不同类型的元素定义嵌套规则的一种很好的方法.他们为什么不包括这样的东西?
更新:我发现了这个: http: //www.w3.org/TR/html5/dom.html#kinds-of-content我猜,这是最接近DTD的.
更新: Visual Studio团队为XHTML5制作了XML Schema.我想这回答了我的问题: http: //blogs.msdn.com/b/webdevtools/archive/2009/11/18/html-5-intellisense-and-validation-schema-for-visual-studio-2008-and -视觉,网络developer.aspx
我不是在谈论类似XHTML的代码.我正在谈论像这个疯狂的标记,这是完全有效的HTML(!)
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html<head>
<title//
<p ltr<span id=p></span</p>
</>
Run Code Online (Sandbox Code Playgroud)
因此,鉴于SGML注入的巨大复杂性,HTML是一种无上下文的语言吗?这是一种正式的语言吗?用语法?
HTML5怎么样?
我是正式语言概念的新手,所以请耐心等待.是的,我已阅读维基百科的文章;)
我有一个生成的页面,它在页面顶部附近插入HTML注释.注释内部是*nix风格的命令.
<!-- command --option value --option2 value2 --option3 -->
Run Code Online (Sandbox Code Playgroud)
此评论完全打破了页面.导致这种情况发生的评论有什么问题,为什么会这样呢?
我正在寻找一个Java解析器,它可以解析用SGML格式化的文档.
对于重复的监视器:我知道讨论这个主题的另外两个线程: 使用SGML Java SGML 解析Java String 到XML转换? 但两者都没有解决方案,因此也是新主题.
对于那些将XML与SGML混淆的人:请阅读:http://www.w3.org/TR/NOTE-sgml-xml-971215#null (简而言之,有足够的细微差别至少使它无法使用它香草形式)
对于那些喜欢向Google发贴海报的人:我已经做过了,而我能提出的最接近的是广受欢迎的SAXParser:http://download.oracle.com/javase/1.4.2/docs/api/javax /xml/parsers/SAXParser.html 但这当然是一个XML解析器.我正在四处寻找是否有人实施了SAX Parser的修改以适应SGML.
最后,我不能使用SX,因为我正在寻找Java解决方案.
谢谢!:)
我试图解析一个文件,如:http: //www.sec.gov/Archives/edgar/data/1409896/000118143112051484/0001181431-12-051484.hdr.sgml
我正在使用Python 3,并且无法找到现有库的解决方案来解析带有开放标记的SGML文件.SGML允许隐式封闭标签.当试图用LXML,XML或美丽的汤解析示例文件时,我最终会在文件的末尾而不是在行的末尾关闭隐式封闭的标签.
例如:
<COMPANY>Awesome Corp
<FORM> 24-7
<ADDRESS>
<STREET>101 PARSNIP LN
<ZIP>31337
</ADDRESS>
Run Code Online (Sandbox Code Playgroud)
这最终被解释为:
<COMPANY>Awesome Corp
<FORM> 24-7
<ADDRESS>
<STREET>101 PARSNIP LN
<ZIP>31337
</ADDRESS>
</ZIP>
</STREET>
</FORM>
</COMPANY>
Run Code Online (Sandbox Code Playgroud)
但是,我需要将其解释为:
<COMPANY>Awesome Corp</COMPANY>
<FORM> 24-7</FORM>
<ADDRESS>
<STREET>101 PARSNIP LN</STREET>
<ZIP>31337</ZIP>
</ADDRESS>
Run Code Online (Sandbox Code Playgroud)
如果有一个非默认解析器传递给LXML/BS4可以处理这个,我就错过了它.
我现在开发网站和XML接口已经7年了,而且从来没有出现过这样的情况,在这种情况下,确实需要使用>for a >.所有disambiguition可能至今引述处理<,&,"和'孤独.
有没有人遇到过这种情况(例如,与SGML处理,浏览器问题,XSLT等有关),你发现它逃脱大于号的必不可少的>?
更新:我刚刚查看了XML规范,例如,它在2.4节中介绍了字符数据:
人物数据
Run Code Online (Sandbox Code Playgroud)[14] CharData ::= [^<&]* - ([^<&]* ']]>' [^<&]*)
所以即使在那里,>除了从CDATA部分的结束序列之外,没有被提及为特殊的东西.
这个单一的案例,其中>有任何意义,将是CDATA部分的结尾]]>,但是再次,如果你引用它,引用(即文字字符串]]>)将字面上落在输出中(因为这是CDATA).
我正在尝试从cpan shell"安装SGML :: Parser :: OpenSP",但它在第一次"make test"时失败了.如果我进入构建目录并运行make test,我也会得到同样的错误.
我相信以下输出的这一部分是相关部分.注意当perl到达新库的"use"行时找不到符号.其中列出的文件存在且可读.当我运行unix命令"nm"时,它确实显示了符号.
我不知道该怎么做的符号未找到错误.如果重要的话,我不是以admin/root身份运行的.这是在Mac上,10.4.11我的谷歌搜索出现了一些提示,如果调用gcc而不是g ++,这可能会发生,但我相信这是正确设置的.
还有什么,我该如何解决?
以下是运行make test的摘录:
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/01basic...........1/4
# Failed test 'use SGML::Parser::OpenSP;'
# at t/01basic.t line 14.
# Tried to use 'SGML::Parser::OpenSP'.
# Error: Can't load '/Users/joshgold/.cpan/build/SGML-Parser-OpenSP-0.994/blib/arch/auto/SGML/Parser/OpenSP/OpenSP.bundle' for module SGML::Parser::OpenSP: dlopen(/Users/joshgold/.cpan/build/SGML-Parser-OpenSP-0.994/blib/arch/auto/SGML/Parser/OpenSP/OpenSP.bundle, 2): Symbol not found: __ZTI15SGMLApplication
# Referenced from: /Users/joshgold/.cpan/build/SGML-Parser-OpenSP-0.994/blib/arch/auto/SGML/Parser/OpenSP/OpenSP.bundle
# Expected in: dynamic lookup
# at (eval 3) line 2
# Compilation failed in require at (eval 3) line 2.
# …Run Code Online (Sandbox Code Playgroud) 我想使用python2.7从EDGAR文件中删除任何不是文档文本的内容(可以在线获得.txt文件).文件的外观示例如下:
EDGAR从此文件的第48页开始提供其文档类型定义:
我的程序的第一部分将EDGAR在线数据库中的.txt文件转换为我命名为"parseme.txt"的本地文件.我想知道的是如何使用DTD来解析.txt文件.我会使用像BeautifulSoup这样的罐装解析模块来完成工作,但EDGAR的格式看起来很独特,我希望避免使用大型正则表达式来完成工作.
import os
filename = 'parseme.txt'
with open(filename) as f:
lines = f.readlines()
Run Code Online (Sandbox Code Playgroud)
我的问题与Parse SGML中的问题有关,在Python 3中使用开放任意标记,并使用lxml来解析Python中带有错误标题的文本文件,但我相信我的问题与python2.7有关并且我不关心标题 - 我只关心文件的文本.