问题:
我有麻烦发生,其选择在通过位置的XML文档的一个不同的部分的节点的xpath表达式。 我使用XSL:变量,以创建表达,但是当我使用的xsl:for-每次用XSL的值变量作为我的SELECT语句中我得到一个错误。
<xsl:variable name="input_params_query">
<xsl:text disable-output-escaping="yes">/example/inputs/dataset[</xsl:text>
<xsl:number value="position()" format="1" />
<xsl:text disable-output-escaping="yes">]/parameter</xsl:text>
</xsl:variable>
<xsl:for-each select="$input_params_query">
<input rdf:resource="#{@name}"/>
</xsl:for-each>
导致错误:
The 'select' expression does not evaluate to a node set.
当我打印出来的XSL的值变量我使用,我得到:
/example/inputs/dataset[1]/parameter
这是我想在换每次调用选择节点的有效和正确的XPath表达式。
是我的XSL的用法:变量的xsl:for-每个选择属性不正确的?
背景和充分的解释:
我使用XSLT来生成在以下XML结构的可用信息的RDF / XML表示。
在这种情况下,什么XML实际上是指一个过程进行两次; 第一次生成输出文件“a”和第二时间生成输出文件“B”。 参数“P1”和“P2”是该生成的文件“a”和参数“P3”是一个输入到该生成的文件“B”的执行的执行输入。
关于“处理”我生成一个单独的RDF并限定用于该过程的执行的输入和输出的每个输出。 基本上,我想定义从/示例/输入/数据集中的所有值[n]的/参数作为输入,其产生输出/示例/处理/输出/文件[N]处理。
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
version="1.0">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="//process">
<xsl:for-each select="outputs/*">
<!-- declare rdf resource of type Process, define Process outputs -->
<!-- ... this I already have working so I have withheld for brevity -->
<!-- define input parameters -->
<xsl:variable name="input_params_query">
<xsl:text disable-output-escaping="yes">/example/inputs/dataset[</xsl:text>
<xsl:number value="position()" format="1" />
<xsl:text disable-output-escaping="yes">]/parameter</xsl:text>
</xsl:variable>
<xsl:for-each select="$input_params_query">
<input rdf:resource="#{@name}"/>
</xsl:for-each>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>