Xml XSLT中的子字符串函数行为奇怪
我正在搜索一个包含值“by”的关键字元素,我想从中提取后面的名称 例如,关键字元素可以有一个值“by John Doe”,我想提取“John Doe”,所以我可以在另一个选择中使用这个名称 简化的XML如下所示:Xml XSLT中的子字符串函数行为奇怪,xml,xslt-2.0,Xml,Xslt 2.0,我正在搜索一个包含值“by”的关键字元素,我想从中提取后面的名称 例如,关键字元素可以有一个值“by John Doe”,我想提取“John Doe”,所以我可以在另一个选择中使用这个名称 简化的XML如下所示: <article-set> <article id="blog-article"> <title>Blog Article</title> <keywords>by John Doe</keywor
<article-set>
<article id="blog-article">
<title>Blog Article</title>
<keywords>by John Doe</keywords>
</article>
<article id="john-doe">
<title>John Doe</title>
</article>
</article-set>
博客文章
约翰·多伊
无名氏
这是一个相关的XSL:
<xsl:template match="article">
<xsl:for-each select="keywords">
<xsl:if test="contains(current(), 'by ')">
<xsl:value-of select="substring(current(), 3)"/>
<xsl:value-of select="//article[title = 'John Doe']"/>
<xsl:value-of select="//article[title = (substring(current(), 3))]"/>
</xsl:if>
</xsl:for-each>
</xsl:template>
的每个值的结果如下:
有人知道为什么会发生这种情况吗?XPath字符串的索引以1开头,因此John Doe给出了
我想你想要//文章[title=substring(current(),4)]
考虑发布最小但完整的示例,让我们重现问题。我担心
甚至不会被XML解析器解析。这是正确的,非常感谢!在选择之外输出值时,我遗漏了一个额外的空格。我感谢你们的投入,下次我会更加小心地发布完整的测试用例!