我对此非常陌生,并试图弄清楚如何做这样的事情:
我在XML文件
中有这种类型的标签(很多)<ImageData src="whatever.tif"/>
我需要做的是首先将它们更改为带有这样的数字的引用:
<INCL.ELEMENT FILEREF="image0001.tif" TYPE="TIFF"/>
所以数字必须得到前导零,并且必须在src属性中找到类型。
当所有这些都改变后,这些元素的列表也必须像这样添加到xml之上
<INCLUSIONS>
<INCL.ELEMENT FILEREF="image0001.tif" TYPE="TIFF"/>
<INCL.ELEMENT FILEREF="image0002.tif" TYPE="TIFF"/>
<INCL.ELEMENT FILEREF="image0003.tif" TYPE="TIFF"/>
<INCL.ELEMENT FILEREF="image0004.tif" TYPE="TIFF"/>
...
<INCL.ELEMENT FILEREF="image0014.tif" TYPE="TIFF"/>
</INCLUSIONS>
因为我是新手,所以我无从何处开始。
答案 0 :(得分:2)
这应该给你一些开始:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml"/>
<xsl:template match="/">
<INCLUSIONS>
<xsl:apply-templates />
</INCLUSIONS>
</xsl:template>
<xsl:template match="ImageData">
<xsl:variable name="imagecount" select="count(preceding::ImageData) + 1" />
<xsl:variable name="fileextension" select="substring-after(./@src, '.')"/>
<INCL.ELEMENT>
<xsl:attribute name="FILEREF">
<xsl:value-of select="concat('image', format-number($imagecount, '0000'), '.', $fileextension)"/>
</xsl:attribute>
<xsl:attribute name="TYPE">
<xsl:choose>
<xsl:when test="$fileextension='tif'">TIFF</xsl:when>
<xsl:otherwise>JPEG</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
</INCL.ELEMENT>
</xsl:template>