动态文档查找

Dynamic document lookup

我正在尝试想出一种方法来动态确定要使用哪个 XML 文档进行查找。我解析输入 XML 文档,并根据我想设置要使用的适当查找文档的值。理想情况下,我会将 $ LookupDoc 设置为要阅读的正确文档。我下面的代码片段不起作用。如果 XSLT 3.0 更容易的话,我可以切换到 XSLT 3.0。

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema" version="2.0">
    <xsl:output method="xml" indent="yes"/>
    <xsl:strip-space elements="*"/>
    <xsl:key name="table-lookup" match="Row" use="@Key1"/>
    <xsl:variable name="LookupLTE" select="document('HuaweiLTE.xml')/Huawei"/>
    <xsl:variable name="LookupHSPA" select="document('HuaweiHSPA.xml')/Huawei"/>
    <xsl:template match="measCollecFile/measData">
        <xsl:variable name="DeviceName" select="@userLabel"/>
        <xsl:choose>
            <xsl:when test="substring($DeviceName,1,1)='L'">
                <xsl:variable name="LookupDoc" select="$LookupLTE"/>
            </xsl:when>
            <xsl:when test="substring($DeviceName,1,1)='H'">
                <xsl:variable name="LookupDoc" select="$LookupHSPA"/>
            </xsl:when>
        </xsl:choose>
        <root>
            <xsl:for-each select="measInfo">
                <xsl:call-template name="loop"> </xsl:call-template>
            </xsl:for-each>
        </root>
    </xsl:template>

您没有显示您似乎想要定义的名为 LookupDoc 的变量的任何用法,但我认为您可以简单地使用 <xsl:variable name="LookupDoc" select="if (substring($DeviceName,1,1)='L') then $LookupLTE else if (substring($DeviceName,1,1)='H') then $LookupHSPA else ()"/> 来定义变量。