하나의 파일에 여러 xml 파일을 병합해야한다는 요구 사항이 있습니다. xsl transform을 사용하여이 작업을 수행했습니다. 내 XSLT 파일은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"
xmlns:Utils="Utils:Helper">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()" />
</xsl:copy>
</xsl:template>
<xsl:template match="assemblies">
<xsl:copy>
<xsl:apply-templates select="*"/>
<xsl:apply-templates select="document('AdminService.xml')/reflection/assemblies/*" />
<xsl:apply-templates select="document('Helpers.xml')/reflection/assemblies/*" />
<!--<xsl:value-of select="Utils:GetFiles()"/>-->
</xsl:copy>
</xsl:template>
<xsl:template match="apis">
<xsl:copy>
<xsl:apply-templates select="*"/>
<xsl:apply-templates select="document('AdminService.xml')/reflection/apis/*" />
<xsl:apply-templates select="document('Helpers.xml')/reflection/assemblies/*" />
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
내 C# 기능이 EmployeeService, AdminService이 도우미는 하나의 파일은 Results.xml에 병합이 세 가지 XML 파일에
var xslt = new XslCompiledTransform();
xslt.Load("XmlMerger.xslt", new XsltSettings { EnableDocumentFunction = true, EnableScript = true}, null);
using (var writer = File.CreateText("XmlDocs\\result.xml"))
{
xslt.Transform(@"EmployeeService.xml", arguments, writer);
}
입니다. 이것은 나를 위해 잘 작동합니다.
이제 XML 파일의 호출 내가 디렉토리에있는 모든 XML 파일을 포함 할 필요가
<xsl:apply-templates select="document('AdminService.xml')/reflection/assemblies/*" />
<xsl:apply-templates select="document('Helpers.xml')/reflection/assemblies/*" />.
정적이다. 현재 내가
public string GetFiles()
{
return "<xsl:apply-templates select=\"document(\'Helpers.xml\')/reflection/assemblies/*\" />";
//return "Helpers.xml";
}
주와 같은 문자열을 전달하여이 XSLT 파일에서 호출하는 C#을 기능에 의해 시도 : 그냥 예를 들어 나는 하나의 파일 만 포함되어 있습니다. 여기에서 나는 XSLT 파일
<xsl:value-of select="Utils:GetFiles()"/>
에 전달하지만 결과는 일반 텍스트로 나오는 그 문자열을 구축을 위해 노력하고 있습니다. 어떻게 이것을 벗어나서 그것의 템플리트 나 디렉토리에서 모든 파일을 동적으로 포함시키는 방법을 말해 주나요?
고마워요. 나를위한 큰 도움! – shanmugharaj