无法成功传递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 []'替换实体变量按预期工作。
答案 0 :(得分:0)
在你的XPath中,用引号括住$entity
,使其成为字符串文字$entity
,而不是要展开的变量。
删除引号:
<xsl:apply-templates select="variable/*[@type=$entity]/item"/>