问题标签 [dtd-parsing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
451 浏览

javascript - 使用 Javascript 解析/可视化 DTD

如何使用 JS 解析 dtd 文件?例如将其转换为对象以进行进一步操作。总体目标是解析DTD并通过javascript将其可视化为浏览器(例如Chrome)中的树状结构

用于演示目的的简单 DTD (books.dtd)

books.dtd / 来源:Treevision Ovidius

(来源:Treevision Ovidius 中加载的 books.dtd)

非常感谢正确方向的提示!我找不到任何东西,或者我只是在寻找错误的东西

更新:一位朋友暗示,另一种可能性是通过 XSLT 将 DTD 转换为 JSON 并使用生成的文件

0 投票
1 回答
26 浏览

c# - 在面向 4.6 的应用程序中链接时,3.5 程序集中的 DTD 验证失败

我有一个用 c# 编写的程序集,它对输入字符串进行 DTD 验证。它使用 XMLReaderSettings.ValidationTpe = ValidationType.DTD 和 XMLReaderSettings.ProhibitDtd = false。在以 2.0、3.5、4.0、4.5 为目标的应用程序中链接此程序集时,XML 验证工作正常,但当应用程序以 4.6 为目标时,它不再工作(DTD 处理被禁止)。我知道 ProhibitDtd 在 4.0 中已被弃用,取而代之的是 DtdProcessing = DtdProcessing.Parse。

我不能使用 DtdProcessing.Parse,除非我的程序集目标为 4.0。我的问题是: 1. 我怎样才能继续以 3.5 为目标并让它在以 4.6 及更高版本为目标的应用程序中工作?2. 如果我必须以 4.0 为目标才能使其工作,这将如何影响使用我的 4.0 程序集以 2.0 为目标的应用程序?

0 投票
1 回答
175 浏览

python - 使用 libxml2 for python 从文本加载 DTD

我目前仅限于使用 libxml2(而不是 lxml)在 QNX 6.5 上进行解析。我想使用从字符串而不是从文件加载的 DTD 来验证我的 xml。

lxml 允许您这样做:

我想使用 libxml2 做同样的事情。我可以从文件加载 DTD,但不知道也找不到从字符串加载它的语法:

有谁碰巧知道如何在 libxml2 中做到这一点?

0 投票
0 回答
103 浏览

xml-validation - 如何使用 DTD 在 XML 中验证 xml:lang ATTLIST?

互联网上的许多文章(例如这篇文章)建议使用xml:lang或一些自定义属性来编码有关 XML 标记内的语言的元信息。他们提到这些代码必须符合BCP47 标准

让我们看看如果我按照文章的建议对语言属性进行编码会发生什么:

  1. 内部 DTD:<!ATTLIST text xml:lang NMTOKEN #IMPLIED>
  2. 内部 XML:<text xml:lang="YODU991Yklew-e-ijsw02ijwk">...</text>

预期的结果是什么?

DTD 验证器将检查YODU991Yklew-e-ijsw02ijwk代码是否是真正的 BCP47 语言代码、国家和脚本是否存在并将其标记为红色,如果这些代码不正确。与http://schneegans.de/完全相同的方式有助于验证这些代码(错误代码正确代码)。

相反会发生什么?

Validator 仅将此属性视为一些文本,并且不会验证,如果它是真实的语言代码或一些乱码。

0 投票
0 回答
145 浏览

delphi - 如何使用 MSXML6 解析 DTD 节点结构

我想在我的 Delphi 应用程序中使用 MSXML6 解析一些独立的 DTD 文件。DTD 文件内容类似于:

尝试使用 MSXML 加载此数据失败,并显示错误消息“不能在 DTD 之外有 DTD 声明”。

将 DTD 包装到一些 DOCTYPE 元素中时,如下所示:

解析器成功,但不允许迭代 DTD 结构。加载和显示文档的 (Delphi) 代码如下所示:

有没有办法使用 MSXML6 迭代 DTD 节点结构?

0 投票
0 回答
79 浏览

java - XML 外部实体引用的不当限制

XML 文档可选地包含文档类型定义 (DTD),除其他功能外,它还支持定义 XML 实体。可以通过以 URI 的形式提供替换字符串来定义实体。XML 解析器可以访问此 URI 的内容并将这些内容嵌入回 XML 文档中以供进一步处理。攻击者可以强制应用程序向攻击者无法直接访问的服务器发出传出请求,这可用于绕过防火墙限制或隐藏端口扫描等攻击源。

按照我显示错误的 Veracode 插件的代码片段,请帮助我如何绕过此检查。

0 投票
1 回答
106 浏览

xml - 非确定性内容模型错误 DTD

鉴于:

我收到了非确定性内容模型错误,诊断跟踪自动化和诊断组可以同时匹配两个或多个令牌。

我改为:

这消除了错误消息,但我不认为我的更改,尤其是对于diagnostic-track-automated,是正确的。

我感谢任何改进建议。

0 投票
0 回答
91 浏览

python - 通过本地 MathML DTD 验证 MathML xml 字符串

我正在尝试以这种方式使用 lxml 验证 MathML XML 字符串:

通过这种方式,它检查 mathml 字符串中指定的 DTD 并通过网络验证字符串。

问题

当没有可用的 nwtwork 时,如何根据本地 DTD 验证 mathml 字符串?

我试过的

我从 https://www.w3.org/Math/DTD/mathml3/mathml3.dtd 下载了 MathML DTD 3,从https://www.w3.org/Math/DTD/mathml1/下载了MathML DTD 1 mathml.dtd并将它们保存在当前工作目录中,我已将 DOCTYPE 声明更改为指向本地 DTD,例如<!DOCTYPE math SYSTEM "path/to/mathml_dtd.dtd">,我终于创建了 lxml.etree.XMLParser no_network=True,但是当我运行以下代码时

我有这个错误:

使用 MathML DTD 1 的本地副本,我得到了这个:

0 投票
0 回答
112 浏览

xml - MS Access ImportXML“不允许DTD”

我正在尝试将 XML 文件导入 Access,但我得到了

31593 错误:不允许 DTD。

我知道我的 xml 中有一些行导致失败,我测试从我的文件中删除这些行并且它工作正常,但我需要知道如何在我的 VBA 脚本中删除这些行,因为我下载了那个 xml 并且我没有每次导入文件时都不想删除这些行。我试图找出如何做到这一点,也许你可以给我一些关于如何做到这一点的想法。

0 投票
1 回答
296 浏览

xml - 如何将 XML DTD 实体分配给属性值

我的 XML:

我想将 xxe(test.txt 文件的内容)传递给 VALUE_OF_XXE。