我最近遇到了一个KML文件,<Document>
内部有<Document>
(实际上是根文档中文件夹内的文档)。由于Document是一个功能,这似乎是有效的,但这在语义上是否可以接受?我在我的应用程序中解析KML,我应该接受它还是拒绝它?
答案 0 :(得分:1)
KML中的Document和Folder元素都是容器类型,文档中的Document,文档内的Document,文档内的文件夹等都是完全有效的。几乎在所有情况下都可以使用Folder和Document互换。
从概念上讲,“文件夹”中包含“文档”是有意义的,但KML文件夹或文档没有这样的限制。 KML 2.2规范中文档和文件夹之间唯一的语义差异是只有Document可以将Schema元素或Shared Styles作为子元素,而Folder不能。除此之外,文件夹和文档是相同的。
以下是KML参考中“Folder”和“Document”元素的语法摘要说明:
<Folder id="ID">
<!-- inherited from Feature element -->
<name>...</name> <!-- string -->
...
<ExtendedData>...</ExtendedData>
<!-- specific to Folder -->
<!-- 0 or more Feature elements -->
</Folder>
<Document id="ID">
<!-- inherited from Feature element -->
<name>...</name> <!-- string -->
...
<ExtendedData>...</ExtendedData>
<!-- specific to Document -->
<!-- 0 or more Schema elements -->
<!-- 0 or more Feature elements -->
</Document>