XSLT - 删除最后一个逗号

Xor*_*rty 2 xml mysql sql xslt

我正在生成MySQL的create table语句.我的源XML看起来像:

<table name="TabName">
  <column> ... </column> <!-- multiple columns -->
  <primary-key> ... </primary-key>
  <foreign-key> ... </foreign-key> <!-- multiple FKs -->
  <key>... </key> <!-- multiple indexes -->
</table>
Run Code Online (Sandbox Code Playgroud)

Transformatin就像

<xsl:for-each select="column"> blabla ,</xsl:for-each>
<xsl:if test="primary-key"> blabla, </xsl:if>
<xsl:for-each select="key"> blabla, </xsl:for-each>
<xsl:for-each select="foreign-key"> blabla, </xsl:for-each>
Run Code Online (Sandbox Code Playgroud)

请注意我在每个声明的末尾添加逗号.下面的SQL输出然后看起来像:

    CREATE TABLE`categories` (
          `CategoryID` tinyint(5) unsigned NOT NULL,
          `CategoryName` varchar(15) NOT NULL,
          `Description` mediumtext NOT NULL,
          `Picture` varchar(50) NOT NULL, 
           PRIMARY KEY (`CategoryID`),) --here is bad column     
   ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Run Code Online (Sandbox Code Playgroud)

如何在进行XSLT转换时删除该逗号?谢谢

Tom*_*lak 5

对于包含逗号的固定字符串,请查看substring-before-last我实现的函数作为另一个问题的答案.

如果您在XSLT中自己创建逗号,请避免创建它是否错误.

<xsl:for-each select="...">
  <!-- ... -->
  <xsl:if test="position() &lt; last()">,</xsl:if>
</xsl:for-each>
Run Code Online (Sandbox Code Playgroud)