XML 中的命名空间使用情况
Namespace usage in XML
我正在使用 pugi xml 解析 XML,它不是命名空间感知解析器(参见 Using Boost to read and write XML files)。我试图弄清楚这可能是一个多大的问题,但问题是我不是 100% 理解 XML 名称空间的用途。
这里是一些 XML(我创建的)的示例,它可能有问题:
<Results>
<Documents xmlns:active="...">
<Document>...</Document>
</Documents>
<Documents xmlns:archived="...">
<Document>...</Document>
<Document>...</Document>
<Document>...</Document>
<Document>...</Document>
</Documents>
</Results>
给定像 /Results/Documents/Document
这样的 XPath 表达式,pugi 能为我做的就是提取所有 <Document>
元素——我会丢失 active/archived 信息。但是,我不确定我是否会在现实世界中遇到过这种命名空间的使用。在这种情况下,似乎最好使用属性来获取 active/archived 信息。有人可以帮助我更好地理解名称空间的使用情况,这样我就可以更好地了解坚持使用 pugi 会失去什么 xml?
尽管默认命名空间声明(例如 xmlns="http://www.example.com"
)和命名空间前缀声明(例如 xmlns:e="http://www.example.com"
)类似于属性,但 XML 命名空间的用途与 XML 属性完全不同.
XML 命名空间的目的是允许将独立开发的 XML 词汇组合在单个 XML 文档中,同时提供两种命名方式与词汇表相关联以及避免词汇表之间命名冲突的方法。
XML 属性的目的是表示数据或元数据。 (参见 XML attribute vs XML element。)
任何给定的 XML 或 XPath 处理器对 XML 命名空间的支持程度是否为您所接受将取决于支持(不)支持的内容的细节以及支持的细节你的需要。但是请注意,不合规有一个严重的缺点:您有 个处理器,其中相同的 XPath 为相同的 XML 文档返回完全不同的结果。互操作性优先于合规性。
我正在使用 pugi xml 解析 XML,它不是命名空间感知解析器(参见 Using Boost to read and write XML files)。我试图弄清楚这可能是一个多大的问题,但问题是我不是 100% 理解 XML 名称空间的用途。
这里是一些 XML(我创建的)的示例,它可能有问题:
<Results>
<Documents xmlns:active="...">
<Document>...</Document>
</Documents>
<Documents xmlns:archived="...">
<Document>...</Document>
<Document>...</Document>
<Document>...</Document>
<Document>...</Document>
</Documents>
</Results>
给定像 /Results/Documents/Document
这样的 XPath 表达式,pugi 能为我做的就是提取所有 <Document>
元素——我会丢失 active/archived 信息。但是,我不确定我是否会在现实世界中遇到过这种命名空间的使用。在这种情况下,似乎最好使用属性来获取 active/archived 信息。有人可以帮助我更好地理解名称空间的使用情况,这样我就可以更好地了解坚持使用 pugi 会失去什么 xml?
尽管默认命名空间声明(例如 xmlns="http://www.example.com"
)和命名空间前缀声明(例如 xmlns:e="http://www.example.com"
)类似于属性,但 XML 命名空间的用途与 XML 属性完全不同.
XML 命名空间的目的是允许将独立开发的 XML 词汇组合在单个 XML 文档中,同时提供两种命名方式与词汇表相关联以及避免词汇表之间命名冲突的方法。
XML 属性的目的是表示数据或元数据。 (参见 XML attribute vs XML element。)
任何给定的 XML 或 XPath 处理器对 XML 命名空间的支持程度是否为您所接受将取决于支持(不)支持的内容的细节以及支持的细节你的需要。但是请注意,不合规有一个严重的缺点:您有