2011-12-12 15 views
2

入力パラメータをXSLTスタイルシートに渡すにはどうすればよいですか?私はxsltprocを使用していますが、--stringparam <param> <value>を引数として使用したいと思いますが、XSLT内のパラメータにアクセスする方法はわかりません。誰かが例を挙げることはできますか?前もって感謝します。xsltの入力パラメータ

答えて

2

これは私が使用しているものです。デフォルト値の部分はオプションです。

<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> 
+1

また、選択にデフォルト値を直接指定することができます 'ます。の' –

3

? 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

+0

良い答えを。 XSLTファイルの外部にパラメータを指定する方法についての私の問題を助けてくれました。 – Anuj

関連する問題