DTD 允许缺少标记
DTD allows missing tag
这是我的 DTD:
<!ELEMENT my-root (element1,element2+)>
<!ELEMENT element1 (#PCDATA)>
<!ELEMENT element2 (element3,(element4?|element5+))>
<!ELEMENT element3 (#PCDATA)>
<!ELEMENT element5 (#PCDATA)>
<!ELEMENT element4 (element6*)>
<!ELEMENT element6 (element5*,element7*)>
<!ELEMENT element7 (#PCDATA)>
这是我的 XML 文件:
<?xml version="1.0"?>
<!DOCTYPE my-root SYSTEM "my-root.dtd">
<my-root>
<element1>a-location</element1>
<element2>
<element3>a-value</element3>
<element4>
<element6>
<element5>test</element5>
<element5>test2</element5>
<element7>test3</element7>
</element6>
</element4>
</element2>
<element2>
<element3>test4</element3>
<element5>test5</element5>
<element5>test6</element5>
</element2>
<element2>
<element3>test7</element3>
</element2>
</my-root>
我的问题是为什么最后一个element2中没有element5标签也是有效的
或者更确切地说,我如何告诉 DTD 在 element2 标记内没有 element4 的情况下至少需要 1 个 element5。
您可以只使用逗号 (,) 而不是竖线 (|) 符号:
<!ELEMENT element2 (element3,(element4?,element5+))>
您可以将 element4
设置为必填项,因此它正好是一个 element4
或一个或多个 element5
...
<!ELEMENT element2 (element3,(element4|element5+))>
这是我的 DTD:
<!ELEMENT my-root (element1,element2+)>
<!ELEMENT element1 (#PCDATA)>
<!ELEMENT element2 (element3,(element4?|element5+))>
<!ELEMENT element3 (#PCDATA)>
<!ELEMENT element5 (#PCDATA)>
<!ELEMENT element4 (element6*)>
<!ELEMENT element6 (element5*,element7*)>
<!ELEMENT element7 (#PCDATA)>
这是我的 XML 文件:
<?xml version="1.0"?>
<!DOCTYPE my-root SYSTEM "my-root.dtd">
<my-root>
<element1>a-location</element1>
<element2>
<element3>a-value</element3>
<element4>
<element6>
<element5>test</element5>
<element5>test2</element5>
<element7>test3</element7>
</element6>
</element4>
</element2>
<element2>
<element3>test4</element3>
<element5>test5</element5>
<element5>test6</element5>
</element2>
<element2>
<element3>test7</element3>
</element2>
</my-root>
我的问题是为什么最后一个element2中没有element5标签也是有效的
或者更确切地说,我如何告诉 DTD 在 element2 标记内没有 element4 的情况下至少需要 1 个 element5。
您可以只使用逗号 (,) 而不是竖线 (|) 符号:
<!ELEMENT element2 (element3,(element4?,element5+))>
您可以将 element4
设置为必填项,因此它正好是一个 element4
或一个或多个 element5
...
<!ELEMENT element2 (element3,(element4|element5+))>