Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
未在条件中填充XSLT值_Xslt_Xslt 1.0 - Fatal编程技术网

未在条件中填充XSLT值

未在条件中填充XSLT值,xslt,xslt-1.0,Xslt,Xslt 1.0,下面是我正在使用的XML <employees> <employee> <empName>ABC</empName> <desgination>SSE</desgination> <age></age> </employee> <employee> <empName>DEF<

下面是我正在使用的XML

<employees>
    <employee>
        <empName>ABC</empName>
        <desgination>SSE</desgination>
        <age></age>
    </employee>
    <employee>
        <empName>DEF</empName>
        <desgination>VP</desgination>
        <age></age>
    </employee>
    <employee>
        <empName>GHI</empName>
        <desgination>Lead</desgination>
        <age></age>
    </employee>        
</employees>
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
     xmlns:my="some.uri" version="1.0">

    <my:EMPNames>
        <entry key="ABC">true</entry>
        <entry key="XYZ">true</entry>
        <entry key="JHK">true</entry>        
    </my:EMPNames>

    <xsl:template match="//employee[document('')/*/my:EMPNames/entry[@key = empName]]">
        <xsl:element name="{local-name()}">
            <xsl:apply-templates select="@*|node()"/>
        </xsl:element>
    </xsl:template>

    <xsl:template match="*">
        <xsl:element name="{local-name()}">
            <xsl:apply-templates select="@*|node()"/>
        </xsl:element>
    </xsl:template>
    <xsl:template match="@*">
        <xsl:attribute name="{local-name()}">
            <xsl:value-of select="."/>
        </xsl:attribute>
    </xsl:template>
</xsl:stylesheet>

基础知识
上海证券交易所
DEF
副总裁
GHI
领导
下面是我正在使用的XSL

<employees>
    <employee>
        <empName>ABC</empName>
        <desgination>SSE</desgination>
        <age></age>
    </employee>
    <employee>
        <empName>DEF</empName>
        <desgination>VP</desgination>
        <age></age>
    </employee>
    <employee>
        <empName>GHI</empName>
        <desgination>Lead</desgination>
        <age></age>
    </employee>        
</employees>
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
     xmlns:my="some.uri" version="1.0">

    <my:EMPNames>
        <entry key="ABC">true</entry>
        <entry key="XYZ">true</entry>
        <entry key="JHK">true</entry>        
    </my:EMPNames>

    <xsl:template match="//employee[document('')/*/my:EMPNames/entry[@key = empName]]">
        <xsl:element name="{local-name()}">
            <xsl:apply-templates select="@*|node()"/>
        </xsl:element>
    </xsl:template>

    <xsl:template match="*">
        <xsl:element name="{local-name()}">
            <xsl:apply-templates select="@*|node()"/>
        </xsl:element>
    </xsl:template>
    <xsl:template match="@*">
        <xsl:attribute name="{local-name()}">
            <xsl:value-of select="."/>
        </xsl:attribute>
    </xsl:template>
</xsl:stylesheet>

真的
真的
真的
我无法打印empName为ABC的员工部分。
我使用的是键值对列表。如果传入的xml empName具有列表中的值,我希望打印该employee部分。不知何故,我无法获取
//employee[document(“”)/*/my:EMPNames/entry[@key=empName]]
请告诉我我这里缺少什么。

表达式
//employee[document(“”)/*/my:EMPNames/entry[@key=empName]]]
是最后的xpath谓词
entry[@key=empName]
。这意味着您正在寻找一个条目,该条目的@key属性等于其子元素empName。换句话说,它在条目元素下查找empName

你需要做的就是这样

<xsl:template match="//employee[empName = document('')/*/my:EMPNames/entry/@key]">

或者,如果只希望包含条目为真的条目,请执行此操作

<xsl:template 
    match="//employee[empName = document('')/*/my:EMPNames/entry[. = 'true']/@key]">