使用XSLT分离XML文件,但可以';t获得交叉标记';s值
我有一个XML文件,如下所示使用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
<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>
假设一项活动可以指派多个员工,我建议
。