本文档中有多少个不同的XML命名空间?

时间:2016-02-03 11:01:39

标签: xml xsd namespaces xml-namespaces

好的,我有这个文件:

    <?xml version="1.0" encoding="utf-8"?>
    <md:madcow xmlns:md="urn:Annotation"
               xsi:schemaLocation="urn:Annotation D:\projects\DELOS\Annotation.xsd"
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xmlns ="urn:Annotation"
               kind="withContent" media="text">
        <md:metadata>
            <md:author>ferro697702212</md:author>
            <md:title> Eine weitere Annotation </md:title>
            <md:creationDate>18/11/2009 10.26.09</md:creationDate>
            <md:modificationDate>18/11/2015 10.26.09</md:modificationDate>    

            <md:sourceHttp>687474703a2f2f7777772e676f6f676c652e69742f</md:sourceHttp>
                <md:type>example</md:type>
                <md:public>true</md:public>
        </md:metadata>
        <annotationBody xmlns="urn:Annotation">
            <contents id="1">
                <textContent>Das ist ein Beispieltext für eine Annotation</textContent>
                <attachments>
                   <attachedImage> file:://A/B/C</attachedImage>
                </attachments>
            </contents>

            <contents id="2">
                <md:textContent> Eine weitere Annotation </md:textContent>
                <attachments>
                    <attachedAudio>http://www.h_da.de/xml/test.mp3</attachedAudio>
                </attachments>
            </contents>

            <textSelection>
                <path>BODY/CENTER/FORM/TABLE[2]/TBODY/TR[2]/TD/FONT/LABEL[3],23,6</path>
                <contentRef>1</contentRef>
            </textSelection>
        </annotationBody>
    </md:madcow>

这是我的问题:

本文档中有多少个不同的XML命名空间?

据我所知,首先是:

xmlns:md="urn:Annotation"

这意味着这是第一个。

然后我有:

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

这是第二个。

然后我们有:

xsi:schemaLocation="urn:Annotation D:\projects\DELOS\Annotation.xsd"

告诉我们在哪里定义了xsi名称空间的模式。

然后我们有:

xmlns="urn:Annotation"

告诉我们默认命名空间是什么。

最后我们有:

<annotationBody xmlns="urn:Annotation">

告诉我们这里我们覆盖这个特定元素的默认命名空间。这有什么让我最困惑的,因为为什么我们在这里需要命名空间声明,因为它的默认命名空间呢?

所以是啊......

我是否正确理解/阅读了代码,如果没有,请告诉我原因以及本文档中有多少个不同的命名空间?

感谢所有人提前。

2 个答案:

答案 0 :(得分:1)

本文档中有两个不同的命名空间,分别是urn:Annotationhttp://www.w3.org/2001/XMLSchema-instance

urn:Annotation被提及三次,它既是文档的默认命名空间,也与md命名空间前缀相关联。命名空间前缀是任意的,只在它们定义的元素中有意义。

这意味着以下三个元素中的每一个都位于相同的命名空间中,并且具有完全相同的信息内容:

<Element xmlns="urn:example"/>
<a:Element xmlns:a="urn:example"/>
<b:Element xmlns:b="urn:example"/>

在您的特定文档中,存在一定数量的冗余,因为默认命名空间不需要 重新分配在{{ 1}}元素。我们也不是需要 annotationBody前缀。

本文档包含完全相同的信息

md

答案 1 :(得分:0)

  

本文档中有多少个不同的XML命名空间?

无。

正如@Damien_The_Unbeliever正确指出的那样,文档中出现了两个不同的名称空间URI:urn:Annotationhttp://www.w3.org/2001/XMLSchema-instance。但是这些名称空间不是&#34;在&#34;该文件,它们在它之外。这是关于命名空间的全部观点,它们不是文档的本地。

如果我已经正确计算,该文档包含4个名称空间声明,表示3个不同的名称空间绑定到2个不同的名称空间。