我在这里阅读了一些答案,并试图将它们应用于案例……但仍在挣扎。
我的两个目标,在标题中恢复:
1) 我必须阅读大型 XML 文档(最多 40 Megs),转换其中几乎所有的自定义标签,但保留这些标签的内容而不做任何修改。
因此,例如,我的文档是这样的:
<?xml version="1.0" encoding="utf-8"?>
<Root>
<Foo>
<PARA>
Text Value 1
</PARA>
<PARA>
Text Value 2
</PARA>
<PARA>
Text Value 3
</PARA>
</Foo>
<SubNode>
<SubExample>
<PARA>
Text Value 4
</PARA>
<PARA>
Text Value 5
</PARA>
<PARA>
Text Value 6
</PARA>
</SubExample>
</SubNode>
</Root>
结果文件必须是:
<?xml version="1.0" encoding="utf-8"?>
<Root>
<Foo>
<p>
Text Value 1
</p>
<p>
Text Value 2
</p>
<p>
Text Value 3`enter code here`
</p>
</Foo>
<SubNode>
<SubExample>
<p>
Text Value 4
</p>
<p>
Text Value 5
</p>
<p>
Text Value 6
</p>
</SubExample>
</SubNode>
</Root>
我的 C# 控制台应用程序调用 XSLT 文件:
XslTransform myXslTransform;
myXslTransform = new XslTransform();
myXslTransform.Load(@"C:\Users\User\Desktop\TransformXml2Html.xslt");
那是:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
<xsl:output omit-xml-declaration="yes" indent="yes" doctype-system="about:legacy-compat"/>
</xsl:param>-->
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="PARA">
<p></p>
</xsl:template>
</xsl:stylesheet>
但是这样做<p>
标签的内容是空的......
2) 输入 XML 文件必须转换为有效的 HTML5 有效文档。
提前谢谢您的帮助