您可以为各个 XML 文件生成带有外部实体引用的 XML 文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE doc [
<!ENTITY fileContent1 SYSTEM "x1.xml">
<!ENTITY fileContent2 SYSTEM "x2.xml">
<!ENTITY fileContent3 SYSTEM "x2.xml">
]>
<doc>
<file name="x1.xml">
&fileContent1;
</file>
<file name="x2.xml">
&fileContent2;
</file>
<file name="x3.xml">
&fileContent3;
</file>
</doc>
然后转换 XML 文件,其中将包含外部实体引用所引用的 XML 文件的所有内容。
一个样式表如下面的样式表,当对上面的一个 XML 实例执行时,会生成一个逗号分隔的包含“foo”的所有文件名的列表:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:param name="find-value" select="'foo'"/>
<xsl:template match="/">
<xsl:apply-templates select="doc/file[contains(., $find-value)]"/>
</xsl:template>
<xsl:template match="file">
<xsl:value-of select="@name"/>
<xsl:if test="position()!=last()">
<xsl:text>, </xsl:text>
</xsl:if>
</xsl:template>
</xsl:stylesheet>