Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何使用xquery选择属性名(fn:local-name()_Sql_Visual Studio 2008_Xquery - Fatal编程技术网

Sql 如何使用xquery选择属性名(fn:local-name()

Sql 如何使用xquery选择属性名(fn:local-name(),sql,visual-studio-2008,xquery,Sql,Visual Studio 2008,Xquery,此查询针对此xml选择@x.query'datarealm/roles/role[4]/@*[2]' <realm name="ACP" context="Expresslane"> <roles> <role name="Administrator" /> <role name="elUser" /> <role name="ElAdministrator" /> <role name="re

此查询针对此xml选择@x.query'datarealm/roles/role[4]/@*[2]'

<realm name="ACP" context="Expresslane">
  <roles>
    <role name="Administrator" />
    <role name="elUser" />
    <role name="ElAdministrator" />
    <role name="regionalManager" justtest="aaa">
      <constraints>
        <constraint name="CustomerList" mode="Select">
          select * from BaanEl.com010nnn where t$cuno in(select * from baanEl.ftPriceListCustomers(&lt;%=comno%&gt;,&lt;%cpls%&gt;))
        </constraint>
      </constraints>
    </role>
    <role name="Rep" />
    <role name="DiscountAdministrator" />
    <role name="LoginAdmin">
      <realm url="http://localhost/PriceWorx_Sandbox/Default.aspx#tabs-2" visible="true" enabled="true" />
    </role>
  </roles>
  <rolegroups>
    <rolegroup name="Administrators">
      <member name="Administrator" />
      <memeber name="elUser" />
      <member name="elAdministrator" />
      <member name="regionalManagee" />
      <member name="Rep" />
      <member name="DiscountAdministrator" />
      <member name="LoginAdmin" />
    </rolegroup>
  </rolegroups>
</realm
返回正确的属性值

如何获取同一属性的本地名称?

试试以下方法:

SELECT  
  name = @x.query('local-name((realm/roles/role[4]/@*[2])[1])')
, val  = @x.query('data(realm/roles/role[4]/@*[2])')

/* -- OUTPUT
 name      val
 justtest  aaa
*/

您可以使用realm/roles/role[4]/@*[2]/local name..但不要依赖属性的位置:XML解析器不必保留源代码顺序。@Alejandro:这不起作用,抛出XQuery[query]:“local name”需要一个单例或空序列,找到的操作数类型为“attribute*,xdt:untypedAtomic*”,它适用于Saxon、Altova和XQSharp。如果要选择多个属性多个角色,并且第四个角色子级有两个属性,即。