[更新]
我找到了解决办法!)我所注意的只是使用<xsl:copy-of select="dc:Document"> instead of <xsl:value-of select="dc:Document">
。谢谢大家)
我需要使用xslt转换xml文件。我可以转换我的xml文件的大部分内容但是在转换过程中保存html标签时有问题。我需要保存标记<Document>...</Document>
的所有格式化而不做任何更改。我认为我必须将一些归因于标记
<?xml version="1.0" encoding="utf-16"?>
<MyItem xmlns="http://schemas.datacontract.org/2004/07/WeekReportJob" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<JobPos>Boss</JobPos>
<Document>
<p>
<span>Table 1</span>
</p>
<table>
<tr>
<td align="left" valign="top">
<p>
<span>Cell 1</span>
</p>
</td>
<td align="left" valign="top" colspan="2">
<p>
<span>Cell 2</span>
</p>
</td>
</tr>
</table>
</Document>
</MyItem>
我的XSLT文件是
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:dc="http://schemas.datacontract.org/2004/07/WeekReportJob"
xmlns:a="http://schemas.datacontract.org/2004/07/DataBaseModel.EF">
<xsl:template match="/">
<html>
<body>
<xsl:value-of select="dc:MyItem/dc:JobPos" />
<xsl:value-of select="dc:MyItem/dc:Document" />
</body>
</html>
</xsl:template>
</xsl:stylesheet>
我想要以下结果
Boss
<p>
<span>Table 1</span>
</p>
<table>
<tr>
<td align="left" valign="top">
<p>
<span>Cell 1</span>
</p>
</td>
<td align="left" valign="top" colspan="2">
<p>
<span>Cell 2</span>
</p>
</td>
</tr>
</table>
有可能吗?
答案 0 :(得分:1)
您可以尝试以下样式表:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:dc="http://schemas.datacontract.org/2004/07/WeekReportJob"
xmlns:a="http://schemas.datacontract.org/2004/07/DataBaseModel.EF" exclude-result-prefixes="dc a">
<xsl:strip-space elements="*"/>
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="/">
<html>
<body>
<xsl:value-of select="dc:MyItem/dc:JobPos" />
<xsl:apply-templates select="dc:MyItem/dc:Document/node()" />
</body>
</html>
</xsl:template>
<!-- remove namespaces -->
<xsl:template match="dc:*">
<xsl:element name="{local-name()}">
<xsl:copy-of select="@*"/>
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>