在XSLT中选择多个属性

时间:2014-02-20 08:34:38

标签: 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">Owner</xsl:attribute>
</xsl:template>

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

我的问题是我希望输出中的这两个字段替换输入中的旧字段。我能够在输出中获得一个值,但我没有得到其他值。

1 个答案:

答案 0 :(得分:0)

我把一个空格作为属性之间的分隔符:

<xsl:stylesheet version='1.0' xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:r2="http://b2b.ibm.com/schema/IS_B2B_CDM/R2_2" exclude-result-prefixes="r2">
    <xsl:output indent="yes"/>

<xsl:strip-space elements="*"/>

    <xsl:template match="node()|@*">
        <xsl:copy>
            <xsl:apply-templates select="node()|@*"/>
        </xsl:copy>
    </xsl:template>

    <xsl:template match="r2:Person">
        <xsl:copy>
            <xsl:attribute name="Role">Owner ReportedBy</xsl:attribute>
            <xsl:apply-templates/>
        </xsl:copy>
    </xsl:template>

</xsl:stylesheet>