摆脱命名空间

时间:2019-11-25 04:18:58

标签: xslt

<xsl:template match="/">
    <xsl:apply-templates select="mea:PublishVS_PPWO"/>
</xsl:template>

<xsl:template match="mea:PublishVS_PPWO">
    <xsl:apply-templates select="mea:VS_PPWOSet"/>
</xsl:template>

<xsl:template match="mea:VS_PPWOSet">
    <xsl:apply-templates select="mea:WORKORDER"/>
</xsl:template>


<xsl:template match="mea:WORKORDER">
    <ExecuteMultipleOperations xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <Operations>
            <Operation xmlns:xsd="http://www.w3.org/2001/XMLSchema">
                <Object>
                    <Object xsi:type="Task">
                        <xsl:apply-templates select="mea:WONUM" />
                        <xsl:call-template name="formatDateTime">
                        <xsl:with-param name="dateTime" select="mea:STATUSDATE" />
                        </xsl:call-template>
                        <xsl:call-template name="TLS"></xsl:call-template>
                        <xsl:apply-templates select="mea:FAILUREREPORT[mea:TYPE='PROBLEM']/mea:FAILURECODE" />
                        <xsl:apply-templates select="mea:FAILUREREPORT[mea:TYPE='CAUSE']/mea:FAILURECODE" />
                        <xsl:apply-templates select="mea:FAILUREREPORT[mea:TYPE='REMEDY']/mea:FAILURECODE" />
                        <xsl:call-template name="TLS2"></xsl:call-template>
                    </Object>
                </Object>
            </Operation>
        </Operations>   
    </ExecuteMultipleOperations>
</xsl:template>

<xsl:template match="mea:WONUM">
    <ExternalRefID><xsl:value-of select="." /></ExternalRefID>
    <Status>Completed</Status>
</xsl:template>
<xsl:template name="formatDateTime">
 <xsl:param name="dateTime" />
 <xsl:variable name="date">
 <xsl:value-of select="substring-before($dateTime, 'T')" />
 </xsl:variable>
 <xsl:variable name="time">
 <xsl:value-of select="substring-before(substring-after($dateTime, 'T'), '+')" />
 </xsl:variable>
 <CompletionDate><xsl:value-of select="concat($date,' ',$time)" /></CompletionDate>
</xsl:template>
<xsl:template name="TLS">
 <TLSMissedAppointmentReason></TLSMissedAppointmentReason>
 <TLSMissedCommitmentReason></TLSMissedCommitmentReason>
 <TLSAction></TLSAction>
</xsl:template>
<xsl:template match="mea:FAILUREREPORT[mea:TYPE='PROBLEM']/mea:FAILURECODE">
    <TLSClearanceCode1><xsl:value-of select="." /></TLSClearanceCode1>
</xsl:template>
<xsl:template match="mea:FAILUREREPORT[mea:TYPE='CAUSE']/mea:FAILURECODE">
    <TLSClearanceCode2><xsl:value-of select="." /></TLSClearanceCode2>
</xsl:template>
<xsl:template match="mea:FAILUREREPORT[mea:TYPE='REMEDY']/mea:FAILURECODE">
    <TLSClearanceCode3><xsl:value-of select="." /></TLSClearanceCode3>
</xsl:template>
<xsl:template name="TLS2">
 <TLSRestorationTime></TLSRestorationTime>
 <TLSCompletionRemarks></TLSCompletionRemarks>
</xsl:template>

正如您在上面看到的那样,我在XSL中仅定义了一个这样的名称空间

ExecuteMultipleOperations xmlns:xsi =“ w3.org/2001/XMLSchema-instance”

但是,我的输出XML具有2个命名空间,如下所示

ExecuteMultipleOperations xmlns:xsi =“ w3.org/2001/XMLSchema-instance” xmlns:mea =“ ibm.com/maximo”

我可以摆脱xmlns:mea =“ ibm.com/maximo”

1 个答案:

答案 0 :(得分:0)

您还没有显示上下文,但是由于样式表使用的是match="mea:FAILUREREPORT ...之类的模式,因此只有在它以某种方式声明xmlns:mea="..."且如果您不需要或不需要该命名空间时,它才会起作用结果元素,然后可以在exclude-result-prefixes="mea"xsl:stylesheet元素上添加xsl:transform