パラメータを渡さない xslt ファイルがあり、その理由がわかりません。
以前にこれを行ったことがありますが、何が欠けているのかわかりません。
グローバル変数を設定しようとしましたが、設定されていないようです。
設定されているローカル変数を渡そうとしましたが、渡されません。" " 要素に直接移動したかったSALES/SUBJECT
のですが、変数が失われ、ビルトイン Rules.xsl ファイルを処理する前にこの問題を覚えていたので、SALES
最初に ELEMENT " " に移動して回避しようとしました。しかし、それはまだそこに行くようでした。しかし、とにかくそれ以前にパラメーターが空白であることがわかりました。
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」が設定されている行で停止してウォッチ ウィンドウを見ると、「TomsForm」と表示されます@MAJORFORM
。しかし、次の行に進むと空白です。そのため、私が使用するさらに下の場所も空白です。
<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>
私はこれを以前に行ったことがありますが、うまくいくでしょう。
これらの方法のどちらも機能しない理由を知りたいです。