假设我有这个XML文件:
<ErrorCodes>
<ErrorCode = "1" value = "ABC"/>
<ErrorCode = "2" value = "DEF"/>
</ErrorCodes>
我可以将此添加为XSLT文件中的变量吗? (我不能只将XML保存为文件并在XSLT中引用它)。 XML必须内联放置在我的XSLT文件上。
是否可以使用XPATH访问我的ErrorCodes XML并根据我作为输入收到的ErrorCode分配我的XSLT变量?
答案 0 :(得分:2)
答案是“是的,您可以”
您可以像这样定义变量(此处确实不需要父ErrorCodes
)
<xsl:variable name="errorCodes">
<ErrorCode code="1" value="ABC"/>
<ErrorCode code="2" value="DEF"/>
</xsl:variable>
然后您可以像这样
进行访问<xsl:value-of select="$errorCodes/ErrorCode[@code='2']/@value" />
或者,如下定义它:
<xsl:variable name="errorCodes" as="node()*">
<ErrorCode code="1" value="ABC"/>
<ErrorCode code="2" value="DEF"/>
</xsl:variable>
然后表达式简化为此
<xsl:value-of select="$errorCodes[@code='2']/@value" />
您还可以使用xsl:key
访问它。例如...
<xsl:key name="errorCodes" match="ErrorCode" use="@code" />
<xsl:variable name="errorCodes">
<ErrorCode code="1" value="ABC"/>
<ErrorCode code="2" value="DEF"/>
</xsl:variable>
<xsl:template match="/">
<xsl:value-of select="key('errorCodes', '2', $errorCodes)/@value" />
</xsl:template>