是否有在XML文档中使用本地名称空间的术语或标准?例如,我想分离Rows
和Columns
的显示项,因此我只需执行以下操作:
<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";,等等,但我想知道使用在当前文档之外没有任何意义的"本地"命名空间的做法是什么,如果这是一种常见的做法(如果是,应该遵循什么建议(?
没有"本地";XML中的命名空间。这里有纳姆帕斯。你可以在你想要的地方创建任意数量的它们。其中一些被广泛认可(例如XSLT或XHTML(,有些则不然。从技术上讲,他们都是平等的。
但是名称空间的目的是分离属于不同域的节点,以防止名称冲突(这使XML可组合(,并使给定域的节点易于选择和处理(例如,//xhtml:*
将选择所有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结构中抢占哪些项应该显示为行或列,这些事情彼此无关。您不希望仅仅因为有人决定表现在应该水平显示而不是垂直显示,或者它应该变成一个列表,就必须重写XML。
让XML传输数据,让应用程序的视图组件找出最好的显示方式
命名空间的设计并不是为了按照您使用它们的方式使用。使用这种文档可以更简单地避免完全使用名称空间,或者使用xmlns="…将所有内容放在同一名称空间中"顶部的声明。