动态文档查找

时间:2016-09-20 13:46:54

标签: xslt-2.0

我正试图想出一种方法来动态确定用于查找的XML文档。我解析输入的XML文档,并根据我想设置的值来设置要使用的相应查找文档。理想情况下,我会将$ LookupDoc设置为正确的文档来阅读。我在下面的代码片段不起作用。我可以切换到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>

1 个答案:

答案 0 :(得分:0)

您似乎没有使用您想要定义的名为LookupDoc的变量,但我认为您只需使用<xsl:variable name="LookupDoc" select="if (substring($DeviceName,1,1)='L') then $LookupLTE else if (substring($DeviceName,1,1)='H') then $LookupHSPA else ()"/>来定义变量。