XSLT 输出不符合预期 [英] XSLT output not as expected
本文介绍了XSLT 输出不符合预期的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我需要删除父 xml 节点并在节点内复制整个 xml.我已经写了一个 xslt 代码,但是,它没有按预期工作.
I have a requirement to remove parent xml nodes and copy entire xml inside node. I have written a xslt code it, however, it is not working as expected.
输入 XML:
<ns0:Messages xmlns:ns0="http://sap.com/xi/XI/SplitAndMerge">
<ns0:Message1>
<ns3:Response xmlns:ns3="urn:enoc.com:HTRUAE:EmployeeLeavesData_Portal">
<EmployeeLeave>
<EmployeeID>100064</EmployeeID>
<EmployeeAbsenceDays>1</EmployeeAbsenceDays>
</EmployeeLeave>
<EmployeeLeave>
<EmployeeID>100065</EmployeeID>
<EmployeeAbsenceDays>1</EmployeeAbsenceDays>
</EmployeeLeave>
</ns3:Response>
</ns0:Message1>
</ns0:Messages>
XSLT 映射:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<Response xmlns:ns3="urn:enoc.com:HTRUAE:EmployeeLeavesData_Portal">
<xsl:copy-of select="Messages/Message1/Response/EmployeeLeave" />
</Response>
</xsl:template>
</xsl:stylesheet>
我得到的输出:
<?xml version="1.0" encoding="UTF-8"?>
<Response xmlns:ns3="urn:enoc.com:HTRUAE:EmployeeLeavesData_Portal" />
预期输出:
<ns3:Response xmlns:ns3="urn:enoc.com:HTRUAE:EmployeeLeavesData_Portal">
<EmployeeLeave>
<EmployeeID>100064</EmployeeID>
<EmployeeAbsenceDays>1</EmployeeAbsenceDays>
</EmployeeLeave>
<EmployeeLeave>
<EmployeeID>100065</EmployeeID>
<EmployeeAbsenceDays>1</EmployeeAbsenceDays>
</EmployeeLeave>
</ns3:Response>
推荐答案
在 XSLT 2 或 3 中你可以使用
In XSLT 2 or 3 you can use
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="#all"
version="3.0">
<xsl:template match="/">
<xsl:copy-of select="//ns3:Response" copy-namespaces="no" xmlns:ns3="urn:enoc.com:HTRUAE:EmployeeLeavesData_Portal"/>
</xsl:template>
</xsl:stylesheet>
这篇关于XSLT 输出不符合预期的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文