2012-11-06 56 views
0

我试图从XML获取URL的列表。这些URL是混合大小写的。我已经尝试了下面的代码(不幸的是xPath 1.0)。在xPath中区分大小写

<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节点。 - > translate($ xpath1,$ uppercase,$ smallcase)< -

任何帮助都会很棒。

回答

0

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

相反,你需要做的是这样

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

我用 '< - XSL:变量名= “小写”> ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ' 这没有奏效。但是这段代码将会找到fldr的一个状态。 '' – DigitalDragon