как выбрать имя атрибута (fn: local-name () с помощью xquery - PullRequest
3 голосов
/ 05 апреля 2011

Этот запрос select @x.query('data(realm/roles/role[4]/@*[2])') к этому XML (

<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

) возвращает правильное значение атрибута ..

как мне получить имя (local-name)) того же атрибута?

1 Ответ

2 голосов
/ 04 августа 2011

Попробуйте это:

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
*/
...