XML中的命名空间使用率



我正在使用pugi XML解析XML,这不是名称空间 - 意识到的解析器(请参阅使用Boost来读取和编写XML文件)。我试图弄清楚这可能是一个问题,但是问题是我不100%理解使用哪些XML名称空间。

这是一些有问题的XML(我创建的)的示例:

<Results>
    <Documents xmlns:active="...">
        <Document>...</Document>
    </Documents>
    <Documents xmlns:archived="...">
        <Document>...</Document>
        <Document>...</Document>
        <Document>...</Document>
        <Document>...</Document>
    </Documents>
</Results>

给定XPATH表达式(例如/Results/Documents/Document),Pugi可以为我做的就是提取所有<Document>元素 - 我会丢失活动/存档的信息。但是,我不确定我是否曾经在现实世界中遇到这种命名空间的使用。似乎在这种情况下,最好使用一个属性来浏览活动/存档的信息。有人可以帮助我更好地了解使用的情况名称空间,这样我就可以通过坚持使用Pugi XML来获得更好的想法?

尽管默认命名空间声明(例如xmlns="http://www.example.com")和名称空间前缀声明(例如xmlns:e="http://www.example.com")类似于属性,但XML名称空间的目的与XML属性完全不同。

XML名称空间的目的是允许独立开发的XML词汇量合并在单个XML文档中,同时提供一种与词汇相关联的方式,也可以避免词汇之间碰撞碰撞的方式。/strong>

XML属性的目的是表示数据或元数据。(请参阅XML属性与XML元素。)

您是否可以接受任何给定XML或XPATH处理器对XML名称空间的支持程度将取决于(不支持)的详细信息以及您的需求细节。但是,请注意,违规行为具有严重的劣势:您已经见证了合规性和不合格处理器之间令人惊讶的分歧,在同一XML文档中,相同的XPath返回了完全不同的结果。互操作性更喜欢合规性。

相关内容

  • 没有找到相关文章

最新更新