入力パラメータをXSLTスタイルシートに渡すにはどうすればよいですか?私はxsltprocを使用していますが、--stringparam <param> <value>
を引数として使用したいと思いますが、XSLT内のパラメータにアクセスする方法はわかりません。誰かが例を挙げることはできますか?前もって感謝します。xsltの入力パラメータ
答えて
これは私が使用しているものです。デフォルト値の部分はオプションです。
<xsl:param name="yourParamname"/>
が必要です。 XSLTファイルへの入力パラメータを与えるためにどのように
<?xml version="1.0"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- default value -->
<xsl:variable name="defaultDeploymentMode">
<xsl:text>test</xsl:text>
</xsl:variable>
<xsl:param name="deploymentMode" select="$defaultDeploymentMode"></xsl:param>
<xsl:template match="/">
<data><xsl:value-of select="$deploymentMode"/>
</data>
</xsl:template>
? XSLTで
(XSLTスタイルシートの最上位要素の子であるxsl:param
)任意グローバルパラメータは、その値が変換の開始により、外部から指定することができます。
外部パラメータのこの設定の仕方は実装によって異なり、1つのXSLTプロセッサによって異なります。使用している特定のXSLTプロセッサのドキュメントを参照してください。ここで
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:param name="pDeletePos" select="3"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="num">
<xsl:if test="not(position() = $pDeletePos)">
<xsl:copy-of select="."/>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
、という名前のグローバルパラメータpDeletePos
削除しなければならないnum
要素の位置:ここ
は小さな例です。
このパラメータにはdefault value
(3)も指定されています。この値は、変換のイニシエータがpDeletePos
パラメータを指定していない場合に使用されます。
上記変換はこのXML文書に適用される:
<nums>
<num>01</num>
<num>02</num>
<num>03</num>
<num>04</num>
<num>05</num>
<num>06</num>
<num>07</num>
<num>08</num>
<num>09</num>
<num>10</num>
</nums>
とpDeletePos
の値を外部5
として指定されている場合、変換は、以下の結果生成:
<nums>
<num>01</num>
<num>02</num>
<num>03</num>
<num>04</num>
<num>06</num>
<num>07</num>
<num>08</num>
<num>09</num>
<num>10</num>
</nums>
を
外部でパラメータを設定する場合は、XslCompiledTransform XSLTプロセッサを起動するときにC#でこれを行う方法を以下に示します。
http://msdn.microsoft.com/en-us/library/system.xml.xsl.xsltargumentlist.addparam.aspx
良い答えを。 XSLTファイルの外部にパラメータを指定する方法についての私の問題を助けてくれました。 – Anuj
また、選択にデフォルト値を直接指定することができます 'ます。の' –