有没有办法使用Oxygen一次更改多个XML文件中的日期格式?

时间:2018-05-08 18:40:00

标签: xml

我使用Oxygen编辑在项目模式下执行各种操作的XML文件。但我一直无法找到一种方法来获取所有包含标记的XML文件,并且当前所有文件都包含mm / dd / yyyy格式的日期文本值,并将它们更改为yyyy / mm / dd格式。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

如果你正在使用oXygen,你可以使用Saxon和XSLT 2.0。这样您就可以使用collection()

示例...

XML输入(" some_dir&#34中的两个XML文件;类似于下面的内容)

<doc>
    <test>05/08/2018</test>
</doc>

XSLT 2.0

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output indent="yes"/>
  <xsl:strip-space elements="*"/>

  <xsl:param name="input_dir" select="'some_dir'"/>
  <xsl:param name="output_dir" select="'another_dir'"/>

  <xsl:template match="@*|node()">
    <xsl:copy>
      <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
  </xsl:template>

  <xsl:template name="init">
    <xsl:apply-templates select="collection(concat($input_dir,'?select=*.xml'))"/>
  </xsl:template>

  <xsl:template match="/doc">
    <xsl:result-document href="{concat($output_dir,'/',tokenize(base-uri(),'/')[last()])}">
      <xsl:copy>
        <xsl:apply-templates select="@*|node()"/>
      </xsl:copy>
    </xsl:result-document>
  </xsl:template>

  <xsl:template match="test">
    <xsl:variable name="tokens" select="tokenize(normalize-space(),'/')"/>
    <xsl:copy>
      <xsl:value-of select="($tokens[3],$tokens[1],$tokens[2])" separator="/"/>
    </xsl:copy>
  </xsl:template>

</xsl:stylesheet>

XML输出(&#34;另外_dir&#34中的两个XML文件;类似于下面的&#39;

<doc>
   <test>2018/05/08</test>
</doc>

请注意,样式表需要指定初始模板。

在XSLT调试器中......

enter image description here

您可以在oXygen的Saxon配置中指定初始模板...

enter image description here