xPath中区分大小写

时间:2012-11-06 13:12:34

标签: xml xpath case-sensitive

我正在尝试从XML获取URL列表。这些网址是大小写混合的。我尝试了下面的代码(不幸的是xPath 1.0)。

<xsl:variable name="smallcase">abcdefghijklmnopqrstuvwxyz</xsl:variable>
<xsl:variable name="uppercase">ABCDEFGHIJKLMNOPQRSTUVWXYZ</xsl:variable>
<xsl:variable name="xpath1">document($fullSitemapDoc)/root/url[contains(loc,$fldr)]</xsl:variable>
<xsl:for-each select="translate($xpath1, $uppercase, $smallcase)">

我收到了一个错误     表达式不返回DOM节点。 - &gt; translate($ xpath1,$ uppercase,$ smallcase)&lt; -

任何帮助都会很棒。

1 个答案:

答案 0 :(得分:0)

您无法以这种方式将XPath表达式作为字符串进行操作。 (好吧,如果你真的需要,有些产品有xx:evaluate()扩展来启用它。)

相反,你需要做类似

的事情
<xsl:for-each select="document(...)/root/url
      [contains(translate(loc, $uppercase, $lowercase)), 
                translate($fldr, $uppercase, $lowercase))]"/>