我有一个 xslt 文件,它不会传递参数,我不知道为什么。
我以前做过,但不确定我错过了什么。
我尝试设置一个全局变量,但似乎没有设置。
我尝试传递一个已设置的局部变量,但它没有通过。我想直接进入我的“ SALES/SUBJECT
”元素,但它会丢失变量,我记得这个问题在处理内置 Rules.xsl 文件之前,所以我先去元素“ SALES
”试图绕过它但它似乎仍然去那里。但是我发现在那之前参数是空白的。
XML 文件是:
<?xml version="1.0"?>
<REPORT VERSION="1.30" MAJORFORM="TomsForm">
<SALES>
<SUBJECT LATITUDE="32.2222" LONGITUDE="-118.222222">
<BUSINESS>Joes Bar and Grill</BUSINESS>
</SUBJECT>
</SALES>
</REPORT>
第一个试图设置全局变量的 XSLT 文件不起作用。如果我停在设置“majorForm”的行并查看监视窗口,@MAJORFORM
显示为“TomsForm”,它应该。但是当我走到下一行时,它是空白的。所以在我使用它的地方再往下,它也是空白的。
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="xml" indent="yes"/>
<xsl:variable name="majorForm" select="@MAJORFORM"/>
<xsl:template match="/*">
<xsl:copy>
<xsl:apply-templates select="SALES/SUBJECT"/>
</xsl:copy>
</xsl:template>
<xsl:template match="SALES/SUBJECT">
<xsl:for-each select ="@*">
<xsl:if test="name() = 'LATITUDE'">
<form>
<formName>
<xsl:value-of select="$majorForm"/>
</formName>
</form>
</xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
在另一个文件中,我将它设置为本地文件,它确实将 $majorForm 设置为“TomsForm”,但是当我在应用模板中传递它时,它永远不会传递任何东西。但是代码将其视为有效参数,只是其中没有任何内容。
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/*">
<xsl:copy>
<xsl:variable name="majorForm" select="@MAJORFORM"/>
<xsl:apply-templates select="SALES">
<xsl:with-param name="mainform" select="$majorForm"/>
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
<xsl:template match="SALES">
<xsl:param name="mainForm"/>
<xsl:for-each select ="@*">
</xsl:for-each>
<xsl:apply-templates>
<xsl:with-param name="mainForm" select="$mainForm"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match="SALES/SUBJECT">
<xsl:param name="mainForm"/>
<xsl:for-each select ="@*">
<xsl:if test="name() = 'LATITUDE'">
<form>
<formName>
<xsl:value-of select="$mainForm"/>
</formName>
</form>
</xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
我以前做过这个,它会工作得很好。
我想知道为什么这些方法都不起作用。