Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.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
Xslt 文档函数()中的动态路径_Xslt - Fatal编程技术网

Xslt 文档函数()中的动态路径

Xslt 文档函数()中的动态路径,xslt,Xslt,XML文件名是特定的,但我需要构建一个动态路径。我尝试使用变量来构建路径,但没有成功: <xsl:variable name="path"> ...conditional code </xsl:variable> <xsl:value-of select="document('myXML.xml')/worksheets/$path"/> …条件码 2.0解决方案可以 您需要一个扩展函数,XPath 2.0不支持动态编译/计算。撒克逊拥有

XML文件名是特定的,但我需要构建一个动态路径。我尝试使用变量来构建路径,但没有成功:

<xsl:variable name="path">
   ...conditional code
</xsl:variable>     <xsl:value-of select="document('myXML.xml')/worksheets/$path"/> 

…条件码

2.0解决方案可以

您需要一个扩展函数,XPath 2.0不支持动态编译/计算。撒克逊拥有
Saxon:evaluate
。即使您的处理器不支持此类函数,您也可以将其作为扩展函数自行实现。

XSLT 1.0或XSLT 2.0标准不支持对任何动态生成的XPath表达式求值。它将在中得到支持

如果动态生成的XPath表达式不太复杂,则可以成功使用此答案中的技术


好问题(+1)。有关解释和解决方法,请参见我的答案。对于简单表达式,Dimitre的解决方案非常酷。我还使用EXLT的dynamic:evaluate函数为该主题添加了一个示例,该函数本质上与Max在回答中提到的saxon:evaluate解决方案相同:我似乎无法使saxon:evaluate()函数与document()函数一起工作。我得到一个静态错误xPath表达式@johkar:XPath表达式错误,您应该这样做:
saxon:evaluate(concat('document(\'myxml.xml\')/',$formPath))
@johkar:saxon:evaluate函数在专业版和企业版上都可用。