XSL変換で変数を出力する方法を教えてもらえますか?簡単なことのように思えますが、私にはできないようです。これが私が持っているコードです:
<?xml version='1.0' encoding='UTF-8' ?>
<xsl:stylesheet version="1.0"
xmlns:fn="http://www.w3.org/2005/02/xpath-functions" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template name="ControlledListStructure">
<xsl:param name="xmlElem" />
<xsl:param name="dataName" />
<xsl:element name="{$xmlElem}">
1: <xsl:text>{$xmlElem}</xsl:text>.
2: {$xmlElem}.
</xsl:element>
</xsl:template>
</xsl:stylesheet>
XmlElemの値が「Wibble」(文字列-ノードではない)でこのテンプレートを呼び出すと、次の出力が得られます。
<Wibble>
1: {$xmlElem}.
2: {$xmlElem}.
</Wibble>
そのため、パラメータが正しく取得され、正しくアクセスできません。 $ xmlElemを正しく印刷して、次のように表示する方法を教えてもらえますか。
<Wibble>
1: Wibble.
2: Wibble.
</Wibble>
ご入力いただきありがとうございます。
すべての回答に重要なものが欠けています:さらに読む:
XSL変換で変数を出力する方法を教えてもらえますか?簡単なことのように思えますが、私にはできないようです。
XSLT 1.0では、 <xsl:variable>
、のコンテンツを生成する主な方法は、含まれているかどうかに応じて2つあります。スカラー値(文字列、数値、またはブール値)、または構造化された値(ノードセット(xmlドキュメントの1つ以上のノード)):
<xsl:value-of select="$yourscalarVariableName"/>
これを使用してスカラー値を生成します。実際には、このスカラー値を含むテキストノードを生成します。
<xsl:copy-of select="$yourStructuredVariableName"/>
これを使用して、変数に含まれるすべてのノードのコピーを作成します。
xsl:variable
にノードのリストが含まれていて、<xsl:value-of ...>
命令のみが使用されている場合は、を知ることが非常に重要です。最初のノードの文字列値が生成されます。これは頻繁にコミットされるエラーであり、FAQです。
3番目の方法があります:属性の生成に<xsl:variable>
を使用する必要がある場合:
<someLiteralResultElement someAttribute="{$theVariable}"/>
中括弧内のXPath式( AVT --attribute-value-template と呼ばれる)が評価され、結果が出力されます。属性値に。
XSLT 2.0では、<xsl:value-of .../>
命令は、互換モードで実行されていない場合、テキストノードのリストを生成します-含まれているノードごとに1つxsl:variable
で。互換モード(属性version="1.0"
が指定されている)で実行すると、<xsl:value-of>
命令はXSLT1.0の場合と同じように動作します。
Xslt 2.0では、<xsl:copy-of>
はXSLT1.0と同じように動作します。ただし、前者はすべてのノードの新しいコピーを生成するため、新しい <xsl:sequence>
命令を使用することをお勧めします。 、一方、<xsl:sequence>
はノードの新しいコピーを生成しません。
これを試して:
<xsl:value-of select="$xmlElem"/>
次を使用できます。
<xsl:value-of select="$xmlElem" />
{$xmlElem}
構文は属性内でのみ機能します。必要なもの:
<xsl:value-of select="$xslElem" />