xslt:嵌入xml并访问它

时间:2018-09-26 14:06:43

标签: xml xslt xslt-2.0

假设我有这个XML文件:

<ErrorCodes>
<ErrorCode = "1" value = "ABC"/>
<ErrorCode = "2" value = "DEF"/>
</ErrorCodes>

我可以将此添加为XSLT文件中的变量吗? (我不能只将XML保存为文件并在XSLT中引用它)。 XML必须内联放置在我的XSLT文件上。

是否可以使用XPATH访问我的ErrorCodes XML并根据我作为输入收到的ErrorCode分配我的XSLT变量?

1 个答案:

答案 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>