我尝试用这种方式在其他Document上选择一个值,但它不起作用。我没有正确的道路。有什么问题?
<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]
我努力获得良好的价值。
答案 0 :(得分:0)
我不认为使用变量来构建XPath是一条你想要走的道路。您可以访问documet()中的节点,就好像它是一个节点一样。
XML data_rapport.xml
<?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"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<xsl:value-of select="document('data_rapport.xml')/data/client"/>
</xsl:template>
</xsl:stylesheet>
输出
<?xml version="1.0" encoding="utf-8"?>clientValue
答案 1 :(得分:0)
使用动态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>
此解决方案需要记住以下几点: