根据XML文件名创建文件路径

时间:2015-08-20 18:34:37

标签: xslt gruntjs xslt-1.0

有没有办法创建文件路径来自文件名的grunt构建?

我有:

xsltproc: {
      options: {
        stylesheet: 'templates/xmlCompiler.xsl'
      },
      compile: {
        files: [{
          expand: true,
          cwd: 'resources/dist/xml',
          src: '*.xml',
          dest: 'build',
          ext: '.html'
        }]
      }
    },

基本上会基于.xml文件创建.html文件。现在,我有一项任务是创建每个HTML文件,其结构为:

建立/ xmlfilename / index.html中

例如: xml文件:xml / aa.xml ,xml / bb.xml ,xml / cc.xml 。 构建后,它变为:build / aa /index.html,build / bb /index.html,build / cc /index.html

它试图查看文件,但我找不到任何文件。你们有任何想法或链接指导我吗?

1 个答案:

答案 0 :(得分:0)

  

现在,我有一项任务是创建每个HTML文件,其结构为:
  建立/ xmlfilename / index.html中

HTML文件没有文件结构,它基本上只是一个文本文件。我假设您的意思是要处理多个XML文件,并且希望将它们存储在不同的目录中?

假设您使用XSLT 2.0(否则无论如何都无法创建多个结果文档),您可以执行以下操作:

<xsl:template name="main">
    <xsl:apply-templates select="collection('xml/*.xml')" />
</xsl:template>

<xsl:template match="/">
    <xsl:variable name="path" select="replace(base-uri(), '.xml', '/')" />
    <xsl:result-document href="{$path}index.html">
        <xsl:apply-templates />
    </xsl:result-document>
</xsl:template>

此代码假定您的处理器将自动创建目录(如果该目录不存在)。如果它不这样做,你应该求助于扩展函数(或写一个UriResolver,这是大多数处理器以某种方式支持的)。但由于您没有提供有关您使用的处理器的任何信息,我无法进一步提出建议。