variables - 如何使用变量选择路径?

标签 variables xslt xpath

我尝试用这种方式在其他文档上选择一个值,但它不起作用。我没有正确的道路。有什么问题吗?

<xsl:template match="//element[@type='champ']/propriete[2]/text()">

    <xsl:variable name="chemin_data" select="." />

    <xsl:value-of select="document('data_rapport.xml')/$chemin_data"/> 

</xsl:template>

data_rapport.xml

<data>
    <client>value </client>
    <renseignement>
        <projet>  value </projet>
        <utilisateur> value <utilisateur>
    </renseignement>
</data>

$chemin_data 包含类似“data/client”的路径

对于每一个champ/propriete[2],我都会尝试获得良好的值(value)。

最佳答案

使用动态 XPath 需要 EXSLT - 动态 http://www.exslt.org/dyn/functions/evaluate/

<xsl:stylesheet version="1.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:dyn="http://exslt.org/dynamic"
                extension-element-prefixes="dyn">

    <xsl:template match="/">
        <xsl:variable name="chemin_data" select="'data/client'" />
        <xsl:variable name="data_rapport" select="document('data_rapport.xml')" />
        <xsl:value-of select="dyn:evaluate(concat('$data_rapport', '/', $chemin_data))"/>
    </xsl:template>

</xsl:stylesheet>

此解决方案需要记住以下几点:

  • 它需要您的 XSLT 处理器支持 EXSLT - 动态(请参阅文档)
  • 您的动态 xpath 必须写为字符串 - 否则您已经创建了一个节点集
  • 由于创建动态 XPath 需要字符串连接,因此我在文档中使用了另一个变量
  • 当然:您应该尽可能避免这种情况,因为它相当脆弱并且会降低性能,因此仅在确实必要时才使用它

关于variables - 如何使用变量选择路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24055764/

相关文章:

android - 在 Android 中保存共享首选项时出现问题

variables - 在机器人框架中找不到变量定义

xslt - 从上下文节点获取给定类型的第 n 个后代节点,它们可能不是兄弟节点

python - 如何从 Flipkart 评论页面获取正确的选择器以进行网页抓取?

xslt - 将 xpath-default-namespace 属性添加到最终编译/转换的 schematron xslt 文件

java - 将整数放入 xpath 的引号中

C++变量重定义

mysql - 选择和存储值,在 IN 子句中使用这些值

xml - 使用 XSLT 用 href 属性包装所有元素

xml - 将命名空间添加到可视映射器中的根节点