我经常听说"DOM级别1","DOM级别2","DOM级别3"和"DOM级别4",并意识到我不知道它们之间的区别或它们之间的相互关系.
我知道非常基础 - DOM是文档对象模型,并且提供对脚本语言的访问(特别是,但据我所知,不限于各种版本的ECMAScript,例如ECMAScript 5.1)来访问HTML文档的元素.(我读过的一些网站 - 例如quirksmode上的dom介绍 - 说它适用于任何XML文档,但HTML是一个足够的子集.)
w3c的DOM技术报告上的日期似乎暗示每个后续的DOM级别都会取代之前的DOM级别.
可悲的是,我发现提供澄清的最佳参考是维基百科,似乎也是这样 - 标准化部分说后续级别"增加"了额外的功能,而没有提到删除任何东西.
现在,对于我的问题,这可能是迅速的火,但希望表达我的无知的一般状态:
The level 1 DOM will work fine on an HTML document和In the Level 1 DOM, each object, whatever it may be exactly, is a Node(无论是从怪异模式介绍),这是否意味着这样的语句是级别2,3和4是真的吗?(这些都是同一个问题,只是问了不同的方法)显然,我可以研究w3c的DOM技术报告中的每个规范,但希望从那些有第一手经验的人那里得到答案.只是通过浏览DOM级别3的规范的更改部分,我看到大多数从2到3的更改都是添加,尽管Node接口中的一些关键实现已经更改.这些改变是否破坏了什么?
我想做的不仅仅是在下次有人告诉我,"哦,这是DOM级别2,所以没关系"时,点头表示赞同,所以欢迎任何我错过的参考资料或者我从研究中没有收到的第一手资料.
对于Python 3,它对我来说是一个很好的做法,提示函数参数和返回类型的数据类型.例如:
def icecream_factory(taste: str='Banana') -> Ice:
ice = Ice(taste)
ice.add_cream()
return ice
Run Code Online (Sandbox Code Playgroud)
这适用于所有简单数据类型和类.但现在我需要使用"函数指针":
class NotificationRegister:
def __init__(self):
self.__function_list = list()
""":type: list[?????]"""
def register(self, function_pointer: ?????) -> None:
self.__function_list.append(function_pointer)
def callback():
pass
notification_register = NotificationRegister()
notification_register.register(callback)
Run Code Online (Sandbox Code Playgroud)
必须注意什么才能?????明确这里需要一个函数指针?我试过function,因为type(callback)是<class 'function'>,但关键字function没有定义.
我在 Windows 64 平台上使用MariaDB 5.5.29 。我创建了这个表:
\n\nCREATE TABLE DM_COUNTRIES\n(\n COUNTRY_UUID BINARY(16) NOT NULL,\n C_NAME VARCHAR(255) NOT NULL UNIQUE,\n C_LOCALNAME VARCHAR(255) DEFAULT NULL,\n C_COUNTRYCODE VARCHAR(255) DEFAULT NULL,\n PRIMARY KEY (COUNTRY_UUID)\n)\nENGINE=InnoDB;\nRun Code Online (Sandbox Code Playgroud)\n\n现在我想确保,如果未提供 UUID(将成为主键),则会自动插入。因此,我创建了这个触发器:
\n\nDELIMITER |\nCREATE TRIGGER TRIG_BI_DM_COUNTRIES\nBEFORE INSERT ON DM_COUNTRIES\nFOR EACH ROW\nBEGIN\n IF NEW.COUNTRY_UUID IS NULL THEN\n SET NEW.COUNTRY_UUID = UUID();\n END IF;\nEND|\nDELIMITER ;\nRun Code Online (Sandbox Code Playgroud)\n\n为了确保一切都已提交(即使架构更改不需要它):
\n\nCOMMIT;\nRun Code Online (Sandbox Code Playgroud)\n\n现在,当我尝试插入新行时:
\n\nINSERT INTO DM_COUNTRIES\n (C_NAME, C_LOCALNAME, C_COUNTRYCODE)\nVALUES\n ('Gro\xc3\x9fbritannien', 'Great Britain', 'UK');\nRun Code Online (Sandbox Code Playgroud)\n\n我希望触发器将新的 UUID 放置到位,然后成功插入到表中。但发生的事情是这样的:
\n\n错误代码:1364。字段“COUNTRY_UUID”没有默认值 …
请检查此链接,我正在尝试从Centos中删除损坏的链接.我也删除了netbeans7.3.desktop文件,但我认为我遗漏了一些东西.
有人可以帮忙吗?
annotations ×1
centos ×1
dom ×1
function ×1
gnome ×1
html ×1
javascript ×1
mariadb ×1
python ×1
python-3.x ×1
sql ×1
triggers ×1
uuid ×1
xhtml ×1
xml ×1