ดูเหมือนว่า exclude-result-prefixes
ใช้ไม่ได้กับ xsl:copy-of
เมื่อฉันเรียกใช้ XML ต่อไปนี้ ผลลัพธ์จะมีเนมสเปซอยู่บนแท็ก <table>
ซึ่งไม่ใช่พฤติกรรมที่ต้องการในกรณีของฉัน เป้าหมายสูงสุดคือการได้รับองค์ประกอบ DataItem ซึ่งอาจมีข้อความประเภท XML/HTML และไม่ควรแก้ไขไม่ว่าด้วยเหตุผลใดก็ตาม แล้ววิธีที่ดีที่สุดในการรับ DataItem ตามที่เป็นอยู่ คืออะไร
XML
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="test.xsl" ?>
<root>
<E2ETraceEvent xmlns="http://schemas.microsoft.com/2004/06/E2ETraceEvent">
<ApplicationData>
<TraceData>
<DataItem>
<table>
<tr>
<td>This should not be a table</td>
<td>It must be a text</td>
</tr>
</table>
</DataItem>
</TraceData>
</ApplicationData>
</E2ETraceEvent>
</root>
XSL
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:te="http://schemas.microsoft.com/2004/06/E2ETraceEvent"
exclude-result-prefixes="te">
<xsl:output method="html" indent="no"/>
<xsl:template match="/">
<html>
<body>
<table>
<thead>
<tr>
<td>Data</td>
</tr>
</thead>
<tbody>
<xsl:for-each select="//te:E2ETraceEvent">
<tr>
<td>
<table>
<xsl:for-each select=".//te:TraceData//te:DataItem">
<tr>
<td>
<xmp>
<xsl:copy-of select="*" />
</xmp>
</td>
</tr>
</xsl:for-each>
</table>
</td>
</tr>
</xsl:for-each>
</tbody>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
เอาท์พุต
<table xmlns="http://schemas.microsoft.com/2004/06/E2ETraceEvent">
<tr>
<td>This should not be a table</td>
<td>It must be a text</td>
</tr>
</table>
เอาท์พุตที่ต้องการ
<table>
<tr>
<td>This should not be a table</td>
<td>It must be a text</td>
</tr>
</table>