Access XML Import:嵌套节点的问题

时间:2016-04-23 19:53:55

标签: xml xslt

我一直在尝试使用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中,但它不起作用......

0 个答案:

没有答案