我编写了一个 XSLT 文件来将 XML 文件从非结构化格式转换为更结构化的格式。但问题是我在目录/子目录结构中存在数千个 XML 文件,我想在所有这些文件上应用相同的 XSLT 并生成与它们对应的新结构化 XML。我尝试使用 Collection() 但没有奏效。我正在使用 Altova XMLSpy。
XML 文件看起来像这样:
<University xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
SchemaVersion="1.0.8">
<UniName>StackOverflow</UniName>
<UniId>123</UniId>
<Courses>
<Course>
<ID>1001</ID>
<Seats>10</Seats>
<Description>Department: CS , Faculty: XYZ</Description>
</Course>
<Course>
<ID>1001</ID>
<Seats>10</Seats>
<Description>To teach how to Write XSLT</Description>
</Course>
<Address>Planet No.# 3 Earth</Address>
<ZipCode>007</ZipCode>
</Courses>
</University>
其对应的 XSLT 文件是:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-
functions" exclude-result-prefixes="xs fn">
<xsl:output method="xml" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<ConnectUni>
<xsl:for-each select="University">
<xsl:variable name="var1_resultof_first" as="node()" select="Courses"/>
<Address>
<xsl:sequence select="fn:string($var1_resultof_first/Address)"/>
</Address>
<Courses>
<xsl:for-each select="$var1_resultof_first/Course">
<Course>
<Id>
<xsl:sequence select="fn:string(ID)"/>
</Id>
<Seats>
<xsl:sequence select="fn:string(Seats)"/>
</Seats>
<xsl:apply-templates select="Description"></xsl:apply-templates>
</Course>
</xsl:for-each>
</Courses>
</xsl:for-each>
</ConnectUni>
</xsl:template>
<xsl:template match="Description">
<xsl:analyze-string select="." regex="Department:\s*(.+)\s*,\s*Faculty:\s*(.+)">
<xsl:matching-substring>
<xsl:element name="Department"><xsl:value-of select="fn:string(regex-group(1))"/>
</xsl:element>
<xsl:element name="Faculty"><xsl:value-of select="fn:string(regex-group(2))"/>
</xsl:element>
</xsl:matching-substring>
<xsl:non-matching-substring>
<xsl:element name="Description"><xsl:value-of select="fn:string(.)"/>
</xsl:element>
</xsl:non-matching-substring>
</xsl:analyze-string>
</xsl:template>
</xsl:stylesheet>
我正在寻找 Java 或 C# 中的解决方案,因为我必须将新生成的 XML 文件转换为可以执行 SQL 查询的 RDBMS。
先感谢您。