我一直在尝试使用xsl导入XML文件,将文件转换一段时间但没有成功。 以下是XML数据的示例:
<?xml version="1.0" encoding="iso-8859-1"?>
<Catalog>
<Category1>
<Name>Category1</Name>
<Site>
<Id>IDOfCategory1</Id>
<Title><[Title]></Title>
</Site>
<SubCategory1>
<Name>SubCategory1Category1</Name>
<Site>
<Id>IDSubCat1Cat1</Id>
<Title><![Title]></Title>
</Site>
</SubCategory1>
<SubCategory2>
<Name>SubCategory2Category1</Name>
<Site>
<Id>IDSubCat2Cat1</Id>
<Title><![Title]></Title>
</Site>
</SubCategory2>
</Category1>
<Category2>
<Name>Category2</Name>
<Site>
<Id>IDOfCategory2</Id>
<Title><[Title]></Title>
</Site>
<SubCategory1>
<Name>SubCategory1Category2</Name>
<Site>
<Id>IDSubCat1Cat2</Id>
<Title><![Title]></Title>
</Site>
</SubCategory1>
<SubCategory2>
<Name>SubCategory2Category2</Name>
<Site>
<Id>IDSubCat2Cat2</Id>
<Title><![Title]></Title>
</Site>
</SubCategory2>
</Category2>
</Catalog>
我需要的是:
Category SubCategory
--------- --------
Category1 SubCategory1OfCategory1
Category1 SubCategory2OfCategory1
Category2 SubCategory1OfCategory2
Category2 SubCategory2OfCategory2
我尝试了几种方法,最接近的方法就是这种方法,但是它将所有Category1放在第一列,而不是更改为Category2。
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="SubCategory">
<SubCategory>
<Category><xsl:value-of select="../../Category/Name"/></Category>
<xsl:apply-templates select="@*|node()"/>
</SubCategory>
</xsl:template>
</xsl:stylesheet>
我读了一些关于这个主题的其他解决方案,这就是我如何达到这个最接近的解决方案,但不是很远......我已经尝试了几个小时(两天......)而且我已经接近退出了,所以,任何帮助将不胜感激。 谢谢!
我今天做了这个:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" version="4.0" indent="yes"/>
<xsl:template match="dataroot">
<html>
<body>
<table>
<xsl:apply-templates select="Catalog"/>
</table>
</body>
</html>
</xsl:template>
<xsl:template match="Catalog">
<Categories>
<Category>
<xsl:value-of select="Category/Name"/>
</Category>
<SubCategory>
<xsl:value-of select="Category/SubCategory/Name"/>
</SubCategory>
</Categories>
</xsl:template>
</xsl:stylesheet>
这只放了第一个Category和第一个SubCategory,仅此而已。 我也尝试过xsl:for-each在Categories之前,然后在之后,然后只在Category中,但它不起作用......