我试图将我从设备获取的XML重新格式化为HTML表格,而且它的格式并不常见。
它在节点名称中使用唯一引用,如下所示:
/网络/内容/主机/内容/ REF_1 /内容
的 /网络/内容/网络/内容/ REF_2 /内容
然后,它使用与文件另一部分相同的引用,作为内容节点的值,如下所示:
/ rules / content / rules / content / REF_3 / content / sources / content / name = REF_1
/ rules / content / rules / content / REF_3 / content / destinations / content / name = REF_2
我试图为内容编写一个模板,而不是让我获得唯一的REF_ID,我试着在另一个分支叶子中获取名称。这意味着我试图找到一个超出我实际背景的值。
我能够使用此变量检索名称XPATH:
<xsl:variable name='objName' select="concat('/storage/objects/',@linkclass,'/content/',@linktype,'/content/',current(),'/content/name/content')" />
但是,我无法在以下查询中使用此XPATH:
<xsl:value-of select="{$objName}">
我认为这不起作用,因为它不在上下文中,但当我静静地询问其中一个XPATH时,我得到了值。
我的完整代码并不复杂:
<xsl:template match="content">
<xsl:variable name='objXPATH' select="concat('/storage/objects/',@linkclass,'/content/',@linktype,'/content/',current(),'/content/name/content')" />
<xsl:variable name='obj' select="{$objXPATH}" />
<xsl:element name="a">
<xsl:attribute name="href">
#<xsl:value-of select="."/>
</xsl:attribute>
<xsl:value-of select="$obj"/>
<br />
</xsl:element>
</xsl:template>
我需要帮助才能解决这个问题,因为有一天我没有进化,而且它让我发疯了。我更喜欢脚本小子而非真正的开发者。
答案 0 :(得分:0)
动态评估(将变量中的字符串视为XPath表达式并对其进行评估)在许多XSLT处理器中作为供应商扩展提供,并且在XSLT 3.0中引入xsl:evaluate后它成为标准的一部分。如果您的XSLT处理器没有这样的扩展,您可以自己编写。或者,如果您更好地解释问题,我们可能会建议一个不需要动态评估的解决方案。