2016-09-30 64 views
0

我必须在xf:select1中提供ref属性值。我需要选择属性的名称,只有当他们都出现在supportedProperties实例,它可以通过以下来完成:如何在xforms中比较字符串区分大小写:select1 ref属性?

<xf:select1 
    ref=" 
     instance('properties')/property[ 
      name = instance('supportedProperties')/property/name 
     ]/name"> 

然而,问题是,supportedProperties可以包含在大写字母的名字。假设我们无法更改实例,有没有一种方法可以进行区分大小写的比较?

试图用lower-case() XPath函数如下,但它没有工作:

<xf:select1 
    ref=" 
     instance('properties')/property[ 
      name = instance('supportedProperties')/property/name 
     ]/lower-case(name)"> 

回答

0

假设你正在使用XPath 2,你可以写:

<xf:select1 
    ref=" 
     instance('properties')/property[ 
      name = instance('supportedProperties')/property/name/lower-case(.) 
     ]/name"> 

这样做是什么lower-case(.)函数适用于由instance('supportedProperties')/property/name返回的序列中的所有元素。

你也可以写:

<xf:select1 
    ref=" 
     instance('properties')/property[ 
      name = (
       for $name in instance('supportedProperties')/property/name 
       return lower-case($name) 
      ) 
     ]/name"> 
+0

我尝试了小写,但它提供了一个XLTForms错误时抛出 错误解析XPath表达式()。 (。)的未知运算符 – Crusaderpyro

+0

这可能是XSLTForms的一个限制,我相信它不支持或部分支持XPath 2.0。我不确定这是否有一个普通的XPath 1.0解决方案。您可能必须先将属性名称转换为小写,或者使小写属性在其他XML元素中可用。 – ebruchez

相关问题