2016-09-30 60 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

相關問題