0

のxsl(1.0)でパラメーターを渡すことに成功できません。'select'の内容を動的に変更することはできないようです。以下は、エラーをスローしないが、$entityパラメーターを認識できない試みです。

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output cdata-section-elements="" encoding="UTF-8" indent="yes" method="xml" omit-xml-declaration="yes"/>   
    <xsl:param name="entity">CreditController[]</xsl:param>
        <xsl:template match="/">
            <xsl:element name="variable">
                  <xsl:attribute name="type">NameValuePair[]</xsl:attribute>
                      <xsl:apply-templates select="variable/*[@type='$entity']/item"/>                      
            </xsl:element>
    </xsl:template>

    <xsl:template match="item">                 
            <xsl:element name="item">
            <xsl:attribute name="type">NameValuePair</xsl:attribute>
            <xsl:element name="value">
                <xsl:attribute name="type">String</xsl:attribute>
                <xsl:value-of select="Code"/>
            </xsl:element>
            <xsl:element name="name">
                <xsl:attribute name="type">String</xsl:attribute>
                <xsl:value-of select="Code"/>-<xsl:value-of select="Value"/>
            </xsl:element>
            </xsl:element>
    </xsl:template>

</xsl:stylesheet>

前もって感謝します。他の投稿では、要素の「モード」属性の使用と設定を推奨しているようです。私はこれらのどちらでも勝ちませんでした。

エンティティ変数を文字列リテラル'CreditController[]'に置き換えると、期待どおりに機能します。

4

1 に答える 1

0

XPath では、引用符で囲み、展開する変数ではなく$entity、文字列リテラルにします。$entity

引用符を削除します。

<xsl:apply-templates select="variable/*[@type=$entity]/item"/>                      
于 2012-04-17T15:19:53.657 に答える