鉴于我们有一些XSLT转换,它将XML A转换为XML B.
在此过程中,我们的转换基于一些规则填充了一些字段B.a.
在此之后我们想要填充B.b.但该场地人口的规则是基于B.a值!因此,我们需要这样做是一种连续的方式,并在下一次计算中使用B.a值。
是否可以在XSLT中使用?
答案 0 :(得分:1)
基本上,它归结为遵循这种模式:
<xsl:template match="/">
<!-- get the result -->
<xsl:copy-of select="$b.b" />
</xsl:template>
<xsl:variable name="$b.a">
<xsl:apply-templates select="doc('a.xml')" mode="a" />
</xsl:variable>
<xsl:variable name="$b.b">
<xsl:apply-templates select="doc('b.xml')" mode="b" />
</xsl:variable>
<xsl:template match="some/node/in/a" mode="a">
<!-- do your thing here -->
</xsl:template>
<xsl:template match="some/node/in/b[$b.a/based/on/a[@x]]" mode="b">
<!-- do your thing here -->
</xsl:template>
如果您因某些原因而不幸遇到XSLT 1.0,请在重新应用节点时对变量使用exslt:node-set()。此外,您必须在选择中而不是(首选)匹配模板模式表达式中区别于此情况,因为XSLT 1.0中的模式不能使用变量引用。