我有一个XML查找文档,希望尝试使其执行起来更快一些。我反复查找文档以返回不同的属性,可以在单个查找中返回所有属性并只解析返回的值?示例代码:
<xsl:attribute name="Oracle_Routing">
<xsl:value-of select="key('table-lookup', $curr_key, $LookupDoc)/@OracleSchema"/>
</xsl:attribute>
<xsl:attribute name="TableName">
<xsl:value-of
select="key('table-lookup', $curr_key, $LookupDoc)/@DestinationTable"/>
</xsl:attribute>
<xsl:variable name="Column"
select="key('table-lookup', $curr_key, $LookupDoc)/@ColumnName"/>
答案 0 :(得分:0)
您当然可以存储<xsl:variable name="referenced-node" select="key('table-lookup', $curr_key, $LookupDoc)"/>
,然后使用例如
<xsl:attribute name="Oracle_Routing">
<xsl:value-of select="$referenced-node/@OracleSchema"/>
</xsl:attribute>
而不是
<xsl:attribute name="Oracle_Routing">
<xsl:value-of select="key('table-lookup', $curr_key, $LookupDoc)/@OracleSchema"/>
</xsl:attribute>
等等。 (作为旁注,我建议您只使用select
上的xsl:attribute
属性,例如<xsl:attribute name="Oracle_Routing" select="$referenced-node/@OracleSchema"/>
)。
如果需要,您还可以存储所有三个属性,例如: <xsl:variable name="atts" as="attribute()*" select="key('table-lookup', $curr_key, $LookupDoc)/(@OracleSchema, @DestinationTable, @ColumnName)"/>
然后使用例如<xsl:attribute name="Oracle_Routing" select="$atts[1]"/>
如果添加或删除属性并且索引更改,则需要两次代码更改。