在 xml 中使用 "Local" 命名空间

Using a "Local" namespace in xml

是否有在 XML 文档中使用本地命名空间的术语或标准?例如,我想将 RowsColumns 的显示项分开,所以我只是在做:

<Data xmlns:R="Rows" xmlns:C="Columns" xmlns:V="Values">
    <R:ProductGroup value="Electronics">
        <R:Product value="Computer">
            <C:Year value="2018">
                <V:SumOfRevenue value="104" />
                <V:SumOfUnits value="3" />
            </C:Year>
            <C:Year value="2019">
                <V:SumOfRevenue value="82" />
                <V:SumOfUnits value="9" />
            </C:Year>
            <C:Year value="(all)">
                <V:SumOfRevenue value="186" />
                <V:SumOfUnits value="12" />
            </C:Year>
        </R:Product>
    </R:ProductGroup>
</Data>

这比修改“Rows_Product”等名称要简单得多,但我想知道使用 'local' 命名空间的做法是什么,它在当前文档,如果这是一种常见做法(如果是,应该遵循哪些建议)?

XML 中没有“本地”命名空间。有命名空间。您可以随心所欲地创建任意多个。其中一些被广泛认可(例如用于 XSLT 或 XHTML 的那些),其中一些则不是。从技术上讲,它们都是平等的。

但命名空间的目的是分隔属于不同域的节点,以防止名称冲突(这使得 XML 可组合)并使给定域的节点易于 select 和处理(例如 //xhtml:* 将 select 所有 XHTML 节点)。

你在这里试图做的是将数据与显示语义合并,这不是一个非常好的主意,无论你是使用命名空间还是“损坏的”名称。

你的数据是这样的

<Data>
    <ProductGroup value="Electronics">
        <Product value="Computer">
            <Year value="2018">
                <SumOfRevenue value="104" />
                <SumOfUnits value="3" />
            </Year>
            <Year value="2019">
                <SumOfRevenue value="82" />
                <SumOfUnits value="9" />
            </Year>
            <Year value="(all)">
                <SumOfRevenue value="186" />
                <SumOfUnits value="12" />
            </Year>
        </Product>
    </ProductGroup>
</Data>

不要抢占XML-结构中哪些项目应该显示为行或列,这些东西彼此无关。您不想仅仅因为有人决定 table 现在应该水平显示而不是垂直显示,或者它应该成为一个列表而不得不重新编写 XML。

让 XML 传输数据,让您的应用程序的视图组件选择最好的显示方式。

名称空间并非设计为按照您使用它们的方式使用。这种文档要简单得多,要么完全避免使用名称空间,要么将所有内容放在同一个名称空间中,并在顶部声明 xmlns="..."。