【问题标题】:Sort attributes in each node in XML [duplicate]在XML中对每个节点中的属性进行排序[重复]
【发布时间】:2017-05-23 00:38:34
【问题描述】:

我有一个这样的 XML

 <root>
    <aree fbc="123" ad="12" b="123"/>
    <beee c="12" a="144"/>
</root>

需要按字母顺序对属性名称进行排序。像这样:

 <root>
    <aree ad="12" b="123" fbc="123"/>
    <beee  a="144" c="12"/>
</root>

我有一个 xQuery 代码,但它不能正常工作。请帮忙。我需要替换为节点的真实名称

select @data.query('<root>{for $i in root/* return <aaa> {for $j in $i/@* order by local-name($j) return  $j} </aaa> }</root>')

【问题讨论】:

  • 真的吗?属性顺序很重要?
  • @kjhughes 我知道 :)
  • @Backs:我知道你知道。 :) 现在我们必须说服 Ivan。
  • 可以按字母顺序对属性进行排序,但是如果您不将结果存储为字符串(您不应该),这将不会被保留。无论您在这里做什么,都不能保证下次以相同的顺序获取属性。在大多数情况下,这样做是为了让 XML 文档在字符串级别上可比较,或者创建一个散列来检查操作。除了属性的顺序之外,也不能保证无关紧要的空格。 Read about the limits here

标签: sql-server xml xquery xquery-sql


【解决方案1】:

XML Recommendation 表示the order of XML attributes is insignificant

请注意,开始标签中属性规范的顺序或 空元素标签不重要。

因此,XML 工具通常不关心属性排序,除非您关心 XML 规范化/规范化1,否则您也不应该关心。

1对于这些罕见的情况,请参阅XML Normalization Recommendation 中的section on attribute processingCanonical XML Recommendation

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-30
    • 1970-01-01
    • 1970-01-01
    • 2010-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多