以下是我的输入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”不应该替换为此值。此值也应该在输出中。
答案 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>