如何在使用 xslt 创建 xml 时使用参数变量

How to use param variables while creating xml using xslt

我必须使用 XSLT 创建 SOAP 请求。我的参数定义如下

<xsl:param name="EmployeeID"/>
<xsl:param name="FirstName"/>
<xsl:param name="MiddleName"/>
<xsl:param name="LastName"/>

使用这些,我正在尝试创建一个 XML (SOAP),如下所示

 <cs:Users>
    <cs:User EmployeeId="">
        <cs:Contact>
            <cs:Name First="" Prefix="" Middle="" Last=""/>
        <cs:Contact>
    <cs:User>
<cs:Users>

我打算使用上面定义为param的变量xml。

我尝试使用如下标签

<cs:User EmployeeId="<xsl:value-of select="$EmployeeID"/>">

但这给出了一个错误。它无法识别 xslt 部分。

你能帮帮我吗?

编辑: 我得到的错误是 'Attribute """ has no value'

下面是完整的 XSLT

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" exclude-result-prefixes="xsl pi this xsd op"
 xmlns:pi="urn:com.workday/picof" xmlns:this="urn:this-stylesheet"        xmlns:intsys="java:com.workday.esb.intsys.xpath.ParsedIntegrationSystemFunction" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:op="http://www.w3.org/2005/xpath-functions">


<xsl:param name="EmployeeID"/>
<xsl:param name="FirstName"/>
<xsl:param name="MiddleName"/>
<xsl:param name="LastName"/>
<xsl:param name="ActiveStatus"/>
<xsl:param name="OnLeave"/>
<xsl:param name="FLSA"/>
<xsl:param name="Division"/>
<xsl:param name="Manager"/>
<xsl:param name="Email"/>
<xsl:param name="Gender"/>
<xsl:param name="Position"/>
<xsl:param name="HireDate"/>
<xsl:param name="CurrentHireDate"/>
<xsl:param name="MonthsOfService"/>
<xsl:param name="Exempt"/>
<xsl:param name="Phone"/>
<xsl:param name="Location"/>
<xsl:param name="AddressLine1"/>
<xsl:param name="AddressLine2"/>
<xsl:param name="City"/>
<xsl:param name="State"/>
<xsl:param name="PostalCode"/>
<xsl:param name="Country"/>
<xsl:param name="BonusType"/>
<xsl:template match="/">
       <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
     <soap:Header/>
     <soap:Body>       
        <cs:SetUsers xmlns:cs="urn:Cornerstone:ClientData">
            <cs:Users>
                <cs:User Id="<xsl:value-of select="$EmployeeID"/>" Active="" Absent="" AllowReconcile="true">
                    <cs:Contact>
                        <cs:Name First="" Prefix="" Middle="" Last=""/>
                        <cs:Email><xsl:value-of select="$Email"/></cs:Email>
                        <cs:Phone Type=""><xsl:value-of select="Phone"/></cs:Phone>
                        <cs:Address CountryCode="">
                            <cs:Line1><xsl:value-of select="$AddressLine1"/></cs:Line1>
                            <cs:Line2><xsl:value-of select="$AddressLine2"/></cs:Line2>
                            <cs:City><xsl:value-of select="$City"/></cs:City>
                            <cs:State><xsl:value-of select="$State"/></cs:State>
                            <cs:PostalCode><xsl:value-of select="$PostalCode"/></cs:PostalCode>
                        </cs:Address>
                    </cs:Contact>
                    <cs:Organization Approvals="1">
                        <cs:Unit Type="Division"><xsl:value-of select="$Division"/></cs:Unit>
                        <cs:Unit Type="Cost Center">What goes here is a mystery!!<!--  <xsl:value-of select="$CostCenter"/>--></cs:Unit>
                        <cs:Unit Type="FLSA"><xsl:value-of select="$FLSA"/></cs:Unit>
                        <cs:Unit Type="Position"><xsl:value-of select="$Position"/></cs:Unit>
                        <cs:Unit Type="Location"><xsl:value-of select="$Location"/></cs:Unit>
                        <cs:Employment LastHireDate="" MonthsOfService="" OriginalHireDate="" Classification="" Status=""/>
                        <cs:Approver><xsl:value-of select="$Manager"/></cs:Approver>
                        <cs:Manager><xsl:value-of select="$Manager"/></cs:Manager>
                    </cs:Organization>
                    <cs:Demographic>
                        <cs:Gender><xsl:value-of select="$Gender"/></cs:Gender>
                        <cs:Ethnicity/>
                    </cs:Demographic>
                    <cs:Authentication>
                        <cs:Username><xsl:value-of select="$EmployeeID"/></cs:Username>
                    </cs:Authentication>
                    <cs:Custom>
                        <cs:Field Name="Bonus Type">
                        <xsl:choose>
                            <xsl:when test="$BonusType = 'Annual'">
                                <xsl:text>ANN</xsl:text>
                            </xsl:when>
                            <xsl:when test="$BonusType = 'Monthly'">
                                <xsl:text>MON</xsl:text>
                            </xsl:when>
                            <xsl:when test="$BonusType = 'Quarterly'">
                                <xsl:text>QTR</xsl:text>
                            </xsl:when>
                        </xsl:choose>
                        </cs:Field>
                    </cs:Custom>
                </cs:User>
            </cs:Users>
        </cs:SetUsers>
     </soap:Body>
  </soap:Envelope>

谢谢, 山姆

您要找的是 Attribute Value Template (AVT)...

<cs:User EmployeeId="{$EmployeeID}">