日期:2014-05-17  浏览次数:20549 次

xml字段解析的Xquery查询问题,已经困惑很多天了,请教前辈
本帖最后由 wstar 于 2012-12-10 13:31:41 编辑
xml部分数据如下

        <priorities tsip:action="new">
          <priority tsip:priorityCode="A3" wila:relationCode="DE-IP">
            <applicationId>
              <number tsip:form="wila">102008031758-6</number>
              <number tsip:form="original">10 2008 031 758.6</number>
              <number tsip:form="tsip">100031758</number>
              <countryCode>DE</countryCode>
              <applicationYear>2008</applicationYear>
              <date>2008-07-04</date>
            </applicationId>
          </priority>
        </priorities>

有两个问题
1、如何取得priority 节的tsip:priorityCode的值,就是"A3"这个值?
2、number节为重复的,我现在用

SELECT f_content.value('
     declare default element namespace "http://schemas.thomson.com/ts/20041221/tsip";
     declare namespace tsip = "http://schemas.thomson.com/ts/20041221/tsip";
    (/tsip:dataFeed/tsip/memberPatents/patent/priorities/priority/applicationId/number)[1]' ,'nvarchar(MAX)') as PR
     from table

只能取到第一个number的值,如何能够取得特定number节的值,如tsip:form="original"的number节的值?因为number节数量是不固定的,按序号取无法满足需要。

先感谢高人了,初期接触XML字段,满头雾水呀。

------解决方案--------------------
XML不熟,帮不了忙,给个路径你看看吧,希望能有帮助:
http://bbs.csdn.net/topics/370267910
------解决方案--------------------
tsip:form="original"的number节的值,Xpath谓词number[@tsip:form="original"]限定:
SELECT f_content.value('
     declare default element namespace "http://schemas.thomson.com/ts/20041221/tsip";
     declare namespace tsip = "http://schemas.thomson.com/ts/20041221/tsip";
    (/tsip:dataFeed/tsip/memberPatents/patent/priorities/priority/applicationId/number[@tsip:form="original"])[1]' ,'nvarchar(MAX)') as PR   
     from table