Xslt 在xsl中添加属性问题

Xslt 在xsl中添加属性问题,xslt,Xslt,下面是我的输入xml <ServiceIncident xmlns="http://b2b.ibm.com/schema/IS_B2B_CDM/R2_2"> <ProviderID>INC0011731</ProviderID> <ProviderPriority>4</ProviderPriority> <WorkflowS

下面是我的输入xml

             <ServiceIncident xmlns="http://b2b.ibm.com/schema/IS_B2B_CDM/R2_2">
             <ProviderID>INC0011731</ProviderID> 
             <ProviderPriority>4</ProviderPriority>
             <WorkflowStatus>NEW</WorkflowStatus>
            <ServiceProvider1>
               <Person Role="AffectedUser">
               <ContactID>ITELLA_BRIDGE_USER</ContactID>
               <FullName>Chad Whaley</FullName>      
               </Person>
           </ServiceProvider1>

INC0011731
4.
刚出现的
ITELLA_BRIDGE_用户
查德·惠利
下面是我的xsl代码iam正在使用,但iam没有获得所需的输出

           <xsl:template match="r2:Person/@Role">        
           <xsl:attribute name="Role">ReportedBy</xsl:attribute>         
           </xsl:template>

报告人

我的问题是我想在serviceprovider根标记下的输出中获得一个以上的person Role=“ReportedBy”,并且person Role=“AffectedUser”不应替换为此值。此值也应存在于输出中。

啊,我明白了。我最初误读了这个请求(或者在我第一次回复后就被编辑了)

因为XSLT是一种编程语言,所以有多种可能的答案,而您没有向我们提供足够的关于您的需求的信息来选择其中一种。这里有一个建议:

假设您的样式表基于标识转换,其中的转换会列出异常(编写大多数样式表的更好方法之一),请添加另一个修改的标识模板,以(a)匹配具有适当角色元素的人员,以及(b)在处理该元素后,插入另一个具有新信息的标识模板

<xsl:template match="r2:Person[@Role!='AffectedUser']">
    <xsl:copy/>>
        <xsl:apply-templates select="node()|@*"/>
    </xsl:copy>
    <Person Role="ReportedBy"/>
</xsl:template>

>

在询问新问题之前,先阅读您最后一个问题()的评论和答案如何?这将替换现有的@Role属性-而不是按照OP的要求(不明智地,IMHO)添加另一个属性。啊,我明白他们在问什么了。更正。