如何在使用 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}">
我必须使用 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}">