XPath:如何获取由属性值已知的节点属性



我有一个集合($targets),具有id-s列(token)。我循环遍历它并获取每个列的id(。)我想获得具有这样id的列然后从这个表-列节点我想获得@val attribute:

<xsl:for-each select="exsl:node-set($targets)/token">
    <xsl:variable name="column" select="string(.)" />
    <xsl:value-of select="//aui:table-column[@id=$column]/@val"/>
</xsl:for-each>

我知道我有一个唯一的正确id,但这个XPath get的空字符串,

集合和for-each工作正常:如果我替换

//aui:table-column[@id=$column]/@val

string(.)

列id-s的值类似于{col1, col2,…}

您的string(.)位于column元素节点的上下文中。它的状态很好。将标记放入变量中。

<xsl:for-each select="exsl:node-set($targets)/token">
    <xsl:variable name="token" select="normalize-space(.)"/>
    <xsl:value-of select="//column[@id=$token]/@val"/>
</xsl:for-each>

normalize-space()将一个节点转换为字符串,并将空格规范化

解释—我在for-each采样的上下文中搜索了表列,该采样由标记化后生成的节点组成,因此一无所获。

代码应该包含一个辅助变量,如下所示:

<xsl:variable name="docroot" select="/" />
<xsl:for-each select="exsl:node-set($targets)/token">
    <xsl:variable name="column" select="string(.)" />
    <xsl:value-of select="$docroot//aui:table-column[@id=$column]/@val"/>
</xsl:for-each>

相关内容

  • 没有找到相关文章

最新更新