在 xml 中使用 "Local" 命名空间
Using a "Local" namespace in xml
是否有在 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”等名称要简单得多,但我想知道使用 '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="..."。
是否有在 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”等名称要简单得多,但我想知道使用 '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="..."。