我使用Oxygen编辑在项目模式下执行各种操作的XML文件。但我一直无法找到一种方法来获取所有包含标记的XML文件,并且当前所有文件都包含mm / dd / yyyy格式的日期文本值,并将它们更改为yyyy / mm / dd格式。有什么建议吗?
答案 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调试器中......
您可以在oXygen的Saxon配置中指定初始模板...