在下面的代码片段中,我试图获取@imageMeta节点的子字符串,附加一些路径位置,并通过XSLT将其作为参数传递给我的java方法。
<xsl:variable name="imagePathFrom" select="/config/assets/images/{substring-after(@imageMeta,'/')}" />
<xsl:variable name="imagePathTo" select="'/dev/svn_root/platform/system'" />
<xsl:value-of select="filecopy:copyFile($imagePathFrom, $imagePathTo)"/>我的@imageMeta节点数据看起来像Images/common/dialog/dialogue_black.png。我必须将上面的路径转换为images/common/dialog/dialogue_black.png (注意大写'I‘改为小写'i'),并附加一些更多的路径数据。
因此,我的最终路径条目应该类似于"/config/assets/images/common/dialog/dialogue_black.png".当我运行我的代码片段时,我得到一个错误,声明:
line 51: Error parsing XPath expression '/config/assets/images/{substring-after(@imageMeta,'/')}'.' 请帮帮忙。
发布于 2012-03-12 21:02:12
select="/config/assets/images/{substring-after(@imageMeta, name="imagePathFrom“xsl '/')}”/>
这里有两个问题,
select可能是XSLT中唯一不能包含AVT的属性属性。/config/assets/images节点,但目的是该变量必须包含字符串AVT这两个问题的解决方案
<xsl:variable name="imagePathFrom" select=
"concat('/config/assets/images/', substring-after(@imageMeta,'/')" />替代解决方案
<xsl:variable name="imagePathFrom" select=
"concat('/config/assets/',
translate(substring(@imageMeta, 1, 1),
$vUpper,
$vLower
),
substring(@imageMeta, 2)
)" />其中,$vLower和$vUpper分别定义为:
'abcdefghijklmnopqrstuvwxyz'和
'ABCDEFGHIJKLMNOPQRSTUVWXYZ'发布于 2012-03-12 19:00:28
您的代码中有一个问题:<xsl:variable name="imagePathFrom" select="/config/assets/images/{substring-after(@imageMeta,'/')}" />
它应该是..<xsl:variable name="imagePathFrom" select="substring-after(/config/assets/images/@imageMeta,'/')" />
发布于 2012-03-12 19:13:42
幼儿程序员'Aravind‘的建议将解决您的解析错误。
您还提到您想要将大写字母i小写。这里有两个选项:
lower-case函数,它将使你的整个字符串小写,这可能不是你想要的。https://stackoverflow.com/questions/9665341
复制相似问题