Sql 如何使用xquery选择属性名(fn:local-name()
此查询针对此xml选择@x.query'datarealm/roles/role[4]/@*[2]'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
<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(<%=comno%>,<%cpls%>))
</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。如果要选择多个属性多个角色,并且第四个角色子级有两个属性,即。