将XML属性和其他属性与父属性值SQL Server 2008配对

将XML属性和其他属性与父属性值SQL Server 2008配对,sql,sql-server,xml,xpath,sqlxml,Sql,Sql Server,Xml,Xpath,Sqlxml,我有xml <translation id="A">mi casa</translation> <translation id="B"> <div style="width:100px; white-space:normal; line-height:13px;" onclick="DoSomething()">una gato</div> </translation> <translation

我有xml

  <translation id="A">mi casa</translation>
  <translation id="B">
    <div style="width:100px; white-space:normal; line-height:13px;" onclick="DoSomething()">una gato</div>
  </translation>
  <translation id="C">ese</translation>
本XML文档中的大部分内容都集中在翻译ID的值上。可以提供许多属性,也可以不提供其他属性

我已经走了这么远:

select 
         pnd.value('(..//@id)[1]','nvarchar(200)') ID
            , pnd.value('(//div/@*) [1] ','nvarchar(max)') elem
            ,pnd.value('local-name(@*[1])','nvarchar(200)') as Attribute
            from @inputXML.nodes('/translation_collection/translation/*') pn(pnd)

编辑:只给我第一个单件,当寻找所有。无法通过MSDN上的膨胀来了解如何在不使用[1]/[2]

的情况下查询我需要的内容。您很接近了,只需在节点函数中使用
@*
即可获取所有属性

declare @data xml = '
  <translation id="A">mi casa</translation>
  <translation id="B">
    <div style="width:100px; white-space:normal; line-height:13px;" onclick="DoSomething()">una gato</div>
  </translation>
  <translation id="C">ese</translation>'

select
    t.c.value('local-name(.)', 'nvarchar(max)') as attr,
    t.c.value('../../@id', 'nvarchar(max)') as parent,
    t.c.value('.', 'nvarchar(max)') as value
from @data.nodes('translation/div/@*') as t(c)
declare@data-xml=”
米卡萨酒店
乌纳加托酒店
ese'
选择
t、 c.value('local-name(.),'nvarchar(max)')作为属性,
t、 c.value(“../../@id”,“nvarchar(max)”作为父级,
t、 c.值(‘.’,‘nvarchar(最大)’)作为值
从@data.nodes('translation/div/@*')到t(c)

哦,伙计,非常感谢你。其中一个会让你的头撞在键盘上一个小时。将标记为答案。非常感谢你。
declare @data xml = '
  <translation id="A">mi casa</translation>
  <translation id="B">
    <div style="width:100px; white-space:normal; line-height:13px;" onclick="DoSomething()">una gato</div>
  </translation>
  <translation id="C">ese</translation>'

select
    t.c.value('local-name(.)', 'nvarchar(max)') as attr,
    t.c.value('../../@id', 'nvarchar(max)') as parent,
    t.c.value('.', 'nvarchar(max)') as value
from @data.nodes('translation/div/@*') as t(c)