Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.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分离XML文件,但可以';t获得交叉标记';s值_Xml_Xslt - Fatal编程技术网

使用XSLT分离XML文件,但可以';t获得交叉标记';s值

使用XSLT分离XML文件,但可以';t获得交叉标记';s值,xml,xslt,Xml,Xslt,我有一个XML文件,如下所示 <Season> <Activitys> <Activity> <No>A001</No> <Date>2020/1/1</Date> </Activity> <Activity> <No>A002</No> <Date>2020/2/1

我有一个XML文件,如下所示

<Season>
<Activitys>
    <Activity>
        <No>A001</No>
        <Date>2020/1/1</Date>
    </Activity>
    <Activity>
        <No>A002</No>
        <Date>2020/2/1</Date>
    </Activity>
</Activitys>

<Staffs>
    <Staff>
        <Name>Tom</Name>
        <AssignedActivity>A001</AssignedActivity>
    </Staff>
    <Staff>
        <Name>Jason</Name>
        <AssignedActivity>A002</AssignedActivity>       
    </Staff>  
</Staffs>  

<Notice>description</Notice></Season>

A001
2020/1/1
A002
2020/2/1
汤姆
A001
杰森
A002
描述
如果要将其转换为2个XML活动文件,每个文件将显示相应的活动
信息

<Activity>
<No>A001</No>
<Date>2020/1/1</Date>
<AssignedStaff>Tom</AssignedStaff>
<Notice>description</Notice></Activity>

A001
2020/1/1
汤姆
描述
现在,我使用下面的XSLT,它可以生成2个文件并获取活动信息。但不知道如何获得分配的人员和通知标签值。我试图使用应用模板,但仍然无法找到方法。有人能提供一些想法吗?非常感谢

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xsl:output method="xml" indent="yes" name="xml"/>
<xsl:template match="/">
    <xsl:for-each select="Season/Activitys/Activity">
        <xsl:variable name="filename" select="concat('output1/',No,'.xml')" />
        <xsl:value-of select="$filename" />         
        <xsl:result-document href="{$filename}" format="xml"> 
            <Activity>
                <No>
                    <xsl:value-of select="No"/>
                </No>
                <Date>
                    <xsl:value-of select="Date"/>
                </Date>
            </Activity>
        </xsl:result-document>
    </xsl:for-each> 
</xsl:template>


好吧,你只需要注意一下

对于参考值,请声明一个键
,并在
中为每个
使用该键

<AssignedStaff><xsl:value-of select="key('staff-act', No)/Name"/></AssignedStaff>

假设一项活动可以指派多个员工,我建议