dtd 相关问题

DTD代表W3C的XML 1.x建议书中规定的“文档类型定义”。 DTD为XML文档定义了正式语法:您可以使用哪些标签以及可以使用它们的位置。验证XML处理器将此语法应用于XML文档以确定它们是否符合这些语法,在这种情况下文档是“有效的”。

IIS url 重写需要 dtd 出站帮助

我有一个问题需要解决。我的 WCF 服务器用 C# 代码编写,在加载时验证 XML 文件。在 XML 中,有一个 DTD URL 指向外部源以验证 XML a...

回答 1 投票 0

使用 lxml 解析 DTD 时出错

我正在尝试编写一个验证脚本,用于根据 NITF DTD 验证 XML,http://www.iptc.org/std/NITF/3.4/specification/dtd/nitf-3-4.dtd。基于这篇文章,我想出了以下内容

回答 2 投票 0

有没有办法在运行 xslt 时忽略引用的 dtd?

当我在 Oxygen 中使用 Saxon 运行以下模板时: 当我在 Oxygen 中使用 Saxon 运行以下模板时: <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:math="http://www.w3.org/2005/xpath-functions/math" exclude-result-prefixes="xs math" expand-text="yes" version="3.0"> <xsl:output indent="yes" method="xml" omit-xml-declaration="no" encoding="utf-8"/> <xsl:template match="/"> <xsl:text>&#xa;</xsl:text> <xsl:apply-templates select="*"/> </xsl:template> <xsl:template match="*"> <!-- On Martin's suggestion I should use node-name instead of name, so I have changed this, but the result is the same. --> <xsl:value-of select="node-name()"/><xsl:text>&#xa;</xsl:text> <xsl:apply-templates select="*"/> </xsl:template> </xsl:stylesheet> 在此 xml 上: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE ddn PUBLIC "-//S1000D//DTD Data Dispatch Note 20050501//EN//XML" "http://www.s1000d.org/s1000d_2-2/xml_dtd/ddn/dtd/ddn.dtd"> <ddn> <ddnc> <modelic>ABC</modelic> <sendid>AASSD</sendid> <recvid>VVBBN</recvid> <diyear>2024</diyear> <seqnum>00001</seqnum> </ddnc> </ddn> 我得到以下输出: <?xml version="1.0" encoding="utf-8"?> ddn ddnc modelic sendid recvid diyear seqnum 很明显(至少对我来说),变换知道元素名称。 如果我将与元素匹配的模板更改为: <xsl:template match="ddn"> <xsl:value-of select="node-name()"/><xsl:text>&#xa;</xsl:text> <xsl:apply-templates select="*"/> </xsl:template> 我得到以下内容,其中不包含任何元素名称: <?xml version="1.0" encoding="utf-8"?> ABC AASSD VVBBN 2024 0000 如果我删除文档类型声明并运行相同的转换,我会得到: <?xml version="1.0" encoding="utf-8"?> ddn ABC AASSD VVBBN 2024 00001 现在已经找到root ddn了。 结论是dtd被转换使用了。 我宁愿忽略 dtd,也不愿尝试纠正其中的某些内容,因为 dtd 本来就不是我的。我只需要转换我得到的文件的内容,而这个问题中包含的xml只是实际文件的一小部分,但无论内容是什么,问题都是一样的。 那么我该如何解决这个问题呢?我是否需要在我的规则中添加一些命名空间(尽管 name 函数没有产生类似的东西),或者我可以告诉 Saxon 忽略 dtd 吗?看起来好像这是设置中的默认设置,但我怀疑这里还缺少其他东西。 我已经尝试使用带有内置 xslt 引擎的 XMLSpy 进行相同的转换,并且其行为方式相同。 如果我像这样添加 * 作为命名空间: 如果我将与元素匹配的模板更改为: <xsl:template match="*:ddn"> <xsl:value-of select="node-name()"/><xsl:text>&#xa;</xsl:text> <xsl:apply-templates select="*"/> </xsl:template> 我得到: <?xml version="1.0" encoding="utf-8"?> ddn ABC AASSD VVBBN 2024 00001 所以这可行,但是为什么?!? 建议? 我下载了一些 DTD,它有 <!ELEMENT ddn (rdf:Description?,ddnc,issdate,security,datarest?, dispto,dispfrom,authrtn,mediaid?,remarks?,delivlst?) > <!ATTLIST ddn id ID #IMPLIED xmlns CDATA #FIXED "http://www.s1000d.org/ddn" %RDFDCATT; > 因此,基于此,对于任何非前缀元素,我希望在 XSLT 中声明 xpath-default-namespace="http://www.s1000d.org/ddn" 允许您选择和/或匹配 ddn、ddnc、issdate 等元素。

回答 1 投票 0

XML 属性可以有空格吗?

我正在为 xml 文档创建 DTD。我有一个 xml 元素的枚举属性。我的问题是:属性 Type 可以有空格吗? 例如: 我正在为 xml 文档创建一个 DTD。我有一个 xml 元素的枚举属性。我的问题是:属性Type可以有空格吗? 例如: <!ELEMENT Link (#PCDATA)> <!ATTLIST Link Type (Amendment|Reference|Superseded|Modified| Corrigendum|Corresponds|Endorsement|Equivalent|Identical|Modified| Not Equivalent|Note taken of|Related|Similar) "Reference"> 所以我想要的是: <Link Type="Not Equivalent" \> 但这似乎令人呕吐。当我说 barf 时,我的意思是当我尝试验证文档(例如在网络浏览器中打开它)时,我收到一条错误消息: ATTLIST 枚举中发现无效字符。错误处理 资源“file:///C:/myxmldocument.xml”。 ... 我需要对空间施一些魔法吗?还是只是运气不好? 我查看了几个点但没有看到任何参考 简短的回答是否定的。 Xml 属性是名称标记,并且名称标记不能包含空格。相关规格链接: 属性 属性类型(参见NotationType) 名称(参见 4a - NameChar) 无效字符是空格。您可以使用 '。'如果您愿意,也可以使用“-”作为分隔符。

回答 1 投票 0

文档类型声明包含或指向的标记声明必须格式正确本周鲜花

我有这个xml文档: 本周鲜花 我有这个xml文档: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE catalog SYSTEM "plantdtd.dtd"> <catalog> <title>Flowers of the week</title> <plant id="A1"> <name>Aloe vera</name> <climate>tropical</climate> <height>60-100cm</height> <usage>medicinal</usage> <image>aloevera.jpg</image> </plant> <plant id="A2"> <name>Orchidaceae</name> <height>8-12in</height> <usage>medicinal</usage> <usage>decoration</usage> <image>Orchidaceae.jpg</image> </plant> </catalog> 我写了这样的DTD: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE catalog SYSTEM "file:/home/p10398/plantdtd.dtd" [ <!ELEMENT catalog(title,plant+)> <!ELEMENT title(#PCDATA)> <!ELEMENT plant(name,climate,height,usage,image)+> <!ELEMENT name(#PCDATA)> <!ELEMENT climate(#PCDATA)> <!ELEMENT height(#PCDATA)> <!ELEMENT usage(#PCDATA)> <!ELEMENT image(#PCDATA)> ]> 我收到此错误: 致命错误: 公共 ID:空 系统 ID:文件:/home/p14524/plantdtd.dtd 行号:4 列数:3 消息:文档类型包含或指向的标记声明 声明必须格式正确。 有人可以解释为什么我会收到此错误吗?或者正确的 DTD? 编辑和更新: 啊!谢谢丹尼尔。 现在之前的错误已经消失了。 我的新 DTD 是 <!ELEMENT catalog (title,plant+)> <!ELEMENT title (#PCDATA)> <!ELEMENT plant (name,climate,height,usage,image)> <!ELEMENT name (#PCDATA)> <!ELEMENT climate (#PCDATA)> <!ELEMENT height (#PCDATA)> <!ELEMENT usage (#PCDATA)> <!ELEMENT image (#PCDATA)> <!ATTLIST plant id ID #REQUIRED> 我收到这个新错误: 行号:18 列数:9 消息:元素类型“植物”的内容必须匹配“(名称、气候、高度、用途、图像)”。 您需要从 DTD 中删除 DOCTYPE。声明中的元素名称后面还应该有空格。 新DTD <!ELEMENT catalog (title,plant+)> <!ELEMENT title (#PCDATA)> <!ELEMENT plant (name,climate,height,usage,image)+> <!ELEMENT name (#PCDATA)> <!ELEMENT climate (#PCDATA)> <!ELEMENT height (#PCDATA)> <!ELEMENT usage (#PCDATA)> <!ELEMENT image (#PCDATA)> 现在 DTD 有效,您在验证 XML 时会看到一些错误。 首先,您需要声明 id 元素的 plant 属性。我建议<!ATTLIST plant id ID #REQUIRED>。 第二个是第二个 climate 中缺少 plant。我不确定这是 XML 错误还是 DTD 错误。 plant 的元素声明并没有多大意义,因为它是按该顺序排列的 5 个元素一次或多次。如果您需要有关该部分的帮助,请描述 plant 应包含哪些内容,我可以帮助您编写正确的声明。 “文档类型声明包含或指向的标记声明必须格式正确”错误 就我而言,我位于代理后面,所以我猜它导致了问题 <?xml version = "1.0" encoding = "UTF-8"?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > 所以我将其更改为https <!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" > 我也遇到了同样的错误。但就我而言,它是这样解决的。在这里阅读完整的说明 我遇到的错误表明我的 XML 负载方式存在问题。在 XML 中,某些字符和结构具有特定的规则,任何偏离这些规则的行为都可能导致解析错误。 在我提供的有效负载中: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE test [<! ENTITY xxe SYSTEM "http://169.254.169.254/" >]> <stockCheck> <productId> &xxe; </productId> <storeId>2</storeId> </stockCheck> <!和ENTITY之间有空格,这可能会导致解析错误。尝试删除空格以使其<!ENTITY: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE test [<!ENTITY xxe SYSTEM "http://169.254.169.254/" >]> <stockCheck> <productId> &xxe; </productId> <storeId>2</storeId> </stockCheck> 如果问题仍然存在,请考虑确保您的 XML 负载遵守 XML 语法规则。另外,请验证是否存在可能导致解析错误的额外空格、无效字符或未闭合标签。

回答 3 投票 0

在 Biztalk 中处理 DTD 消息

我的项目中有一个需求,需要在BizTalk中处理DTD类型的文件。目前,我正在进行可行性检查。我无法找到任何包含完整详细信息的博客。可以吗...

回答 1 投票 0

实体 &bar;没有定义

我正在尝试将外部 DTD 调用到我的 xml 文件,然后按如下方式进行: 我正在尝试将外部 DTD 调用到我的 xml 文件,我按照如下方式进行: <?xml version="1.0" encoding="UTF-8"?> <?xml-model href="https://digi.ub.uni-heidelberg.de/schema/tei/heiEDITIONS/tei_hes.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?> <?xml-model href="https://digi.ub.uni-heidelberg.de/schema/tei/heiEDITIONS/tei_hes.rng" type="application/xml" schematypens="http://purl.oclc.org/dsdl/schematron"?> <!DOCTYPE TEI [ <!ENTITY % heiEDITIONS_entities SYSTEM "https://digi.ub.uni-heidelberg.de/schema/tei/heiEDITIONS/declarations/heieditions-entities.txt"> %heiEDITIONS_entities; ]> 所有 DTD 实体都可以在 ENTITY 部分声明的地址处找到。 但是,当我在 xml 文件中遇到一个实体时,例如 &bar;,它表示该实体未声明。对于 &iuml; 实体也是如此。尽管是当您看到 url 中的实体时!所以我不太明白。 我使用 Sublime text 作为文本编辑器。 我哪里做错了? 非常感谢 由于对 XML 外部实体 (XXE) 攻击的安全担忧,许多处理器现在默认禁用外部 DTD 获取。这会导致您的实体未定义。 根据工具/处理器的不同,您可能需要弄清楚如何启用外部实体解析。 https://cheatsheetseries.owasp.org/cheatsheets/XML_External_Entity_Prevention_Cheat_Sheet.html

回答 1 投票 0

为什么我无法在 T-SQL 中启用 DTD 支持?

我正在 T-SQL 中使用 DTD 并使用以下代码: 使用客户; 声明 @xmlData XML; SET @xmlData = ' ]>&l...

回答 1 投票 0

在 DTD/XML 中创建逻辑

由于我的学习,我正在学习 XML/DTD。现在我有一个练习,我必须在其中创建订单。一点是,我有两种不同类型的客户。一名学生和一名非学生。

回答 1 投票 0

将关系数据库架构映射到文档类型定义 (DTD)

是否可以将关系数据库架构映射到文档类型定义 (DTD) 然后开始填充 XML 文档。我得到了类似以下内容: 部门(A、B、C、D)和其他...

回答 1 投票 0

是否可以通过DTD中的参数实体重用`("0" | "1")`?

一些公司“抛弃”带有冗长冗长的标签描述的 XML,但从未做出任何努力来正式描述这种混乱的结构。 因此我试图从

回答 1 投票 0

如何使 jQuery Mobile 属性 XHTML 有效

我不久前开始使用 jQuery Mobile,了解 jQuery Mobile 的人都知道,它使用自己的 HTML 属性来为项目赋予预定义的角色。主要是div。 一些例子: 我不久前开始使用 jQuery Mobile,了解 jQuery Mobile 的人都知道,它使用自己的 HTML 属性来为项目提供预定义的角色。主要是div。 一些例子: <div data-role="page" id="trackPage"> <div data-role="header"> ... </div><!-- /header --> <div data-role="content" id="content_init"> <form action="DoTrack" method="post" id="track_form" data-ajax="false"> <div data-role="fieldcontain" id="div_trackselect"> <fieldset data-role="controlgroup" data-type="horizontal"> .... </fieldset> </div> </form> ... </div> ... </div> 如您所见,添加了许多 jQuery 属性,例如 data-role data-type data-ajax data-transition data-iconpos ... 现在,我更喜欢使用 XHTML 严格语法,但是在验证时出现了这些错误:http://cl.ly/400Q080G3X2V3j3x2S00 我也尝试了 XHTML Transitional,但它给出了相同的错误。 我尝试通过谷歌搜索找到解决方案,但找不到。我认为要解决这个问题,所有 jQuery Mobile 属性都应该存在一个 DTD,对吗? 还有其他方法可以解决这个问题吗? jQuery Mobile 主页明确指出: 一个统一的、基于 HTML5 的用户界面系统,适用于所有流行的移动设备平台... 因此,您应该使用 HTML5 文档类型。如果这对您很重要,这将确保您的页面有效。 <!DOCTYPE html> 不要忘记,如果您使用 HTML5 文档类型,您仍然可以使用 XHTML 样式语法。我想大多数人都是这样。 顺便说一句,jQuery Mobile 并没有创建自己的属性 - 它们不完全是“jQuery Mobile”属性 - data-* 属性系统 是 HTML5 的一部分,其存在是为了让您可以将任意数据附加到 DOM 节点。

回答 1 投票 0

logback.xml 的 XML 架构或 DTD?

我在网上看到过一些关于为 logback.xml 文件提供 XML 模式或 DTD 以便在 ID 之类的 IDE 中至少具有非常基本的验证和自动完成功能会有多棒的讨论...

回答 7 投票 0

正确的 XML DTD,分析 Intellij 生成的 DTD

有一个 XML 包含以下元素: 5 10 当我使用 Inte 生成 DTD 时...

回答 1 投票 0

注释 <xref> 标签并保持文本为纯文本,如果部分/@id 与文件夹内 xml 或文件夹外 xml 文件不匹配

如果同一文件夹xml文件或其他文件夹xml文件中的section/@id不匹配,我们要注释标签: 每个文件夹都有多个/单个 xml 文件和 和部分...

回答 1 投票 0

更新gwt-module.dtd

我使用java编译器1.8 我使用已安装的 JRE jdk-17 从批处理文件或在 Eclipse 中调用 mvn clean install 编译 Maven 包时 我收到这个错误 [INFO] 编译模块 mleWidgeset。

回答 1 投票 0

当我使用 python ElementTree 时,解析带有 ü 等特殊字符的 xml 文件失败Schnelle Multiplikation von Polynomen über Körpern der </desc> <question vote="1"> <p>xml文件:</p> <pre><code><?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE dblp SYSTEM "dblp.dtd"> <dblp> <title>Schnelle Multiplikation von Polynomen &uuml;ber K&ouml;rpern der Charakteristik 2.</title> </dblp> </code></pre> <p>我用 python 如下传递这个文件,我还有一个 .dtd 文件:</p> <pre><code>import xml.etree.ElementTree as ET tree=ET.parse(r"../data/test_dblp.xml") root=tree.getroot() for i in range(0,9): print root[0][i].text </code></pre> <p>报错:</p> <blockquote> <p>xml.etree.ElementTree.ParseError: undefined entity 'ü';</p> </blockquote> </question> <answer tick="false" vote="1"> <p>使用本网站另一篇文章的解决方案解决:</p> <pre><code>from xml.etree.ElementTree import iterparse, XMLParser import htmlentitydefs class CustomEntity: def __getitem__(self, key): if key == 'umml': key = 'uuml' # Fix invalid entity return unichr(htmlentitydefs.name2codepoint[key]) parser = XMLParser() parser.parser.UseForeignDTD(True) parser.entity = CustomEntity() for (event, node) in iterparse('dblp.xml', events=['start'], parser=parser): print node.tag node.clear() </code></pre> </answer> <answer tick="false" vote="0"> <p>uuml 看起来像一个标准的 html5 实体。在运行 xml 解析器之前将它们转换为它们的 unicode 字符可能会有所帮助。在 python3.4+ 中,您可以为此使用<pre><code>html.unescape</code></pre>。</p> <pre><code>from html import escape, unescape textXML = re.sub("\\&\\w+\\;", lambda x: escape(unescape(x.group(0))), text) </code></pre> </answer> </body></html>

xml文件: Schnelle Multiplikation von Polynomen über Körpern der </desc> <question vote="1"> <p>xml文件:</p> <pre><code><?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE dblp SYSTEM "dblp.dtd"> <dblp> <title>Schnelle Multiplikation von Polynomen &uuml;ber K&ouml;rpern der Charakteristik 2.</title> </dblp> </code></pre> <p>我用 python 如下传递这个文件,我还有一个 .dtd 文件:</p> <pre><code>import xml.etree.ElementTree as ET tree=ET.parse(r"../data/test_dblp.xml") root=tree.getroot() for i in range(0,9): print root[0][i].text </code></pre> <p>报错:</p> <blockquote> <p>xml.etree.ElementTree.ParseError: undefined entity 'ü';</p> </blockquote> </question> <answer tick="false" vote="1"> <p>使用本网站另一篇文章的解决方案解决:</p> <pre><code>from xml.etree.ElementTree import iterparse, XMLParser import htmlentitydefs class CustomEntity: def __getitem__(self, key): if key == 'umml': key = 'uuml' # Fix invalid entity return unichr(htmlentitydefs.name2codepoint[key]) parser = XMLParser() parser.parser.UseForeignDTD(True) parser.entity = CustomEntity() for (event, node) in iterparse('dblp.xml', events=['start'], parser=parser): print node.tag node.clear() </code></pre> </answer> <answer tick="false" vote="0"> <p>uuml 看起来像一个标准的 html5 实体。在运行 xml 解析器之前将它们转换为它们的 unicode 字符可能会有所帮助。在 python3.4+ 中,您可以为此使用<pre><code>html.unescape</code></pre>。</p> <pre><code>from html import escape, unescape textXML = re.sub("\\&\\w+\\;", lambda x: escape(unescape(x.group(0))), text) </code></pre> </answer> </body></html>

回答 0 投票 0

如何在不强制#PCDATA 的情况下允许它以及如何拒绝#PCDATA?

我想要一个像这样的xml结构: 允许no#PCDATA 允许允许#PCDATA 我有: 我想要一个像这样的 xml 结构体: <root> allow<back>no#PCDATA</back> allow<front>allow#PCDATA</front> </root> 我有: <!ELEMENT root (back?,front?)> <!ELEMENT back (js*)> <!ELEMENT front (para*)>

回答 0 投票 0

如何处理xsdata库中的CDATA标签?

我正在致力于创建与 Finn API 对话的服务,它需要 XML 而不是 JSON。 基于 *.dtd 文件和 xsdata 库,我生成了允许我构建请求对象的类......

回答 0 投票 0

是否可以使用 XXE 和 libxml2 泄露数据?

我正在研究XXE和数据泄露,我想通过实际测试来了解它是如何工作的,但由于某些原因,我无法实现。 我正在使用一个小的 C 程序来读取 XML...

回答 0 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.