我现在已经半天了。无法使简单的变量覆盖工作lol ...
以下是示例:awesomecheck.xsl
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:variable name="enableAwesome" select="false()"/>
<xsl:template name="checkAwesomeness">
<xsl:if test="$enableAwesome">
This is awesome
</xsl:if>
</xsl:template>
</xsl:stylesheet>
然后我尝试使用以下示例覆盖它,例如:realawesome.xsl
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:import href="test://xslt/awesomecheck.xsl"/>
<xsl:variable name="enableAwesome" select="true()"/>
</xsl:stylesheet>
当我调用realawesome.xsl
时,它应该在技术上覆盖变量并触发条件以打印This is awesome
。但我在awesomecheck.xsl
中获得了一些IO异常。
任何暗示都会非常感激......呃。
PS:我已经阅读了大约6个其他链接,其中几个在Stackoverflow上,尝试了他们的解决方案和方法,但仍然没有。我也尝试使用with-param
,但也没有......其中一个更有用的链接是:XSLT stylesheet parameters in imported stylesheets
如果您有更好的方法来实施/覆盖它,请告诉我。 &GT;。&LT;
答案 0 :(得分:1)
不确定您正在尝试做什么,以及您遇到的问题究竟是什么(如果您收到错误消息,那么聪明的事情就是在您的问题中重现它)。我怀疑真正的问题在于你的测试方法。请尝试以下方法:
<强> external.xsl 强>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:variable name="var" select="false()"/>
<xsl:template name="mytemplate">
<xsl:value-of select="$var"/>
</xsl:template>
</xsl:stylesheet>
&#34;真实&#34; XSLT 强>
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:import href="external.xsl"/>
<xsl:variable name="var" select="true()"/>
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<output>
<xsl:call-template name="mytemplate"/>
</output>
</xsl:template>
</xsl:stylesheet>
当上述内容应用于任何XML输入时,结果为:
<?xml version="1.0" encoding="UTF-8"?>
<output>true</output>
即。导入文档中的变量被&#34; local&#34;覆盖。值。