Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Variables 如何使用变量选择路径?_Variables_Xslt_Xpath - Fatal编程技术网

Variables 如何使用变量选择路径?

Variables 如何使用变量选择路径?,variables,xslt,xpath,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"/&g

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

<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_report.xml

<data>
    <client>value </client>
    <renseignement>
        <projet>  value </projet>
        <utilisateur> value <utilisateur>
    </renseignement>
</data>
<?xml version="1.0" encoding="UTF-8"?>
<data>
    <client>clientValue </client>
    <renseignement>
        <projet>  value </projet>
        <utilisateur> value </utilisateur>
    </renseignement>
</data>

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


对于每一个
champ/propriete[2]
我都试图获得好的价值。

我不认为使用变量来构造XPath是您想要走的路。您可以像访问节点一样访问documet()中的节点

XML数据_report.XML

<data>
    <client>value </client>
    <renseignement>
        <projet>  value </projet>
        <utilisateur> value <utilisateur>
    </renseignement>
</data>
<?xml version="1.0" encoding="UTF-8"?>
<data>
    <client>clientValue </client>
    <renseignement>
        <projet>  value </projet>
        <utilisateur> value </utilisateur>
    </renseignement>
</data>

客户价值
价值
价值
XSL


输出

<?xml version="1.0" encoding="utf-8"?>clientValue 
clientValue

使用动态XPath需要EXSLT-dynamic


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

  • 它要求XSLT处理器支持EXSLT-Dynamic(请参阅文档)
  • 必须将动态xpath编写为字符串,否则就已经创建了节点集
  • 我在文档中使用了另一个变量,因为创建动态XPath需要字符串连接
  • 当然,您应该尽量避免这种情况,因为它非常脆弱,会降低性能,所以只有在真正必要时才使用它

你能解释一下你想做什么吗
document('data\u report.xml')/$chemin\u data
没有任何意义。$chemin\u data包含一个类似于“data/client”的路径,用于每个champ/propriete[2]我试图获得好的值,但这行不通,因为
$chemin_data
包含整个上下文而不是部分上下文。为什么要使用变量来尝试构造XPath?我不明白,因为当我尝试这样做时:它是work@MarcusRickert