在xsl中添加属性问题

时间:2014-02-20 11:59:33

标签: xslt

以下是我的输入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>

下面是我使用的xsl代码,但是我没有得到所需的输出。

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

我的问题是我想在serviceprovider root标签下的输出中获得一个人Role =“ReportedBy”,并且Person Role =“AffectedUser”不应该替换为此值。此值也应该在输出中。

1 个答案:

答案 0 :(得分:0)

啊,我明白了。我最初误读了请求(或者自我第一次回复以来编辑过)。

由于XSLT是一种编程语言,因此有多种可能的答案,并且您没有向我们提供足够的信息来了解您的要求,而是选择其中一种。这是一个建议:

假设您的样式表基于身份转换,转换拼写出异常(编写大多数样式表的更好方法之一),请添加另一个身份模板,修改为(a)匹配Person-with-appropriate-role元素,(b)在处理该元素后,插入另一个具有新信息的文件。

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