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

问题描述 投票:0回答:1

有一个 XML 包含以下元素:

<localHeight>
<localFeet>5</localFeet>
<localInches>10</localInches>
</localHeight> 

当我使用 Intellij 生成 DTD 时,它是这样的:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE localHeight[
<!ELEMENT localHeight (localFeet |  localInches)*>  
<!ELEMENT localFeet (#PCDATA)>  
<!ELEMENT localInches (#PCDATA)>  

]> 

这甚至适用于此 XML :

<localHeight>
</localHeight> 

其中没有任何其他元素。
使用|表示它包含 localFeet 或 localInches 标签。
我想出了以下 DTD:

<!DOCTYPE localHeight[
<!ELEMENT localHeight (localFeet, localInches)>  
<!ELEMENT localFeet (#PCDATA)>  
<!ELEMENT localInches (#PCDATA)>  

]>  

这也是正确的,但可能比 IntelliJ 生成的 DTD 表达得更精确。需要一些输入,因为我不确定我在这里的想法是否正确

xml intellij-idea dtd
1个回答
0
投票

模式(或 DTD)描述一类文档的共同特征。因此,从单个文档(尤其是仅包含三个元素的文档)推断模式涉及大量猜测。想象一下尝试从一个非常简单的网页制定出 HTML 规范!您的问题中关于 XML 文档存在“正确的 DTD”的想法是完全错误的;如果您只有一份文档,则有任意数量的正确 DTD。

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