使用XSLT2.0创建文件夹结构



我正在尝试创建一个样式表,将XML转换为其他格式的XML,在此过程中,它应该创建多个XML文件,这些文件放在不同的文件夹中。我尝试使用的XML文件非常大(约50000行),我想将其自动化。我想转换的XML看起来像

XML:

<Site> <View name="big_bang"> <Element name="Galaxy"> <Property value="milky_way"/> <Element localizedName="Earth"> <Property localizedName="Adresse" value="1"/> </Element> </Element> </View> <View name="more_big_bang"> <Element name="Galaxy"> <Property value="orion"/> <Element localizedName="otherEarth"> <Property localizedName="otherAdresse" value="10"/> </Element> </Element> </View> </Site>

XSLT:

<xsl:template match="Outside"> <xsl:apply-templates select="//Site"/> </xsl:template>

`<xsl:template match="Site">
    <xsl:result-document method="xml" href="{string-join(ancestor-or-self::Site/@name, '/')}/test.xml"> 
        <GraphicsTree>
            <xsl:copy-of select="."/>
        </GraphicsTree>
    </xsl:result-document>
</xsl:template>`

XSLT应该为每个子节点创建名称为namelocalizedName的文件夹,因此每个文件夹中都应该有小XML和Property的副本。但我得到了一个foder和一个XML文件,并将整个XML文件复制到其中。我还使用了SAXON处理器。

根据我之前的建议,我认为对于这个XML,您需要一种类似的方法

<xsl:template match="Site">
  <xsl:apply-templates select="//Element[@name | @localizedName]"/>
</xsl:template>
<xsl:template match="Element">
  <xsl:result-document href="{string-join(ancestor-or-self::Element[@name | @localizedName]/(if (@name) then @name else @localizedName), '/')}/properties.xml">
    <root>
      <xsl:copy-of select="Property"/>
    </root>
  </xsl:result-document>
</xsl:template>

相关内容

  • 没有找到相关文章

最新更新