我想从我的xml文件中使用xslt删除逗号。 如何正确地用空格替换包含在节点或属性值中的任何逗号?用SPACE替换逗号使用XSLT
这里是我的XSLT文件:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:wd="urn:com.workday/bsvc">
<xsl:output method="text" encoding="utf-8" media-type="text/plain" />
<xsl:strip-space elements="*"/>
<xsl:variable name="newline" select="'
'" />
<xsl:variable name="tab" select="'	'" />
<xsl:variable name="comma" select="','" />
<xsl:variable name="padding" select="' '" /> <!-- 30 spaces for padding -->
<!-- Longest Column Header Text is 39 letters long -->
<xsl:variable name="FAO" select="concat('FAO', $padding, $padding)" />
<xsl:variable name="FAO1" select="concat('FAO REFERENCE ID', '')" />
<xsl:variable name="FAO2" select="concat('FAO TYPE', $padding)" />
<xsl:variable name="RESP" select="concat('RESPONSIBLE PERSON', $padding, $padding, $padding, $padding)" />
<xsl:template match="/">
<!-- <xsl:variable name="textVal" select="*/text()" />
<xsl:value-of select="translate($textVal, ',' ,' ')" />-->
<xsl:value-of select="$FAO"/><xsl:value-of select="$comma"/>
<xsl:value-of select="$FAO1"/><xsl:value-of select="$comma"/>
<xsl:value-of select="$FAO2"/><xsl:value-of select="$comma"/>
<xsl:value-of select="$RESP"/><xsl:value-of select="$comma"/>
<xsl:value-of select="$newline"/>
<xsl:for-each select="/wd:Report_Data/wd:Report_Entry">
<xsl:value-of select="substring(concat(wd:FAO, $padding, $padding, $padding, $padding, $padding), 1, string-length($FAO))" /><xsl:value-of select="$comma"/>
<xsl:value-of select="substring(concat(wd:FAO_REFERENCE_ID, $padding, $padding, $padding, $padding, $padding), 1, string-length($FAO1))" /><xsl:value-of select="$comma"/>
<xsl:value-of select="substring(concat(wd:FAO_TYPE, $padding, $padding, $padding, $padding, $padding), 1, string-length($FAO2))" /><xsl:value-of select="$comma"/>
<xsl:value-of select="substring(concat(wd:RESPONSIBLE_PERSON/@wd:Descriptor, $padding, $padding, $padding, $padding, $padding), 1, string-length($RESP))" /><xsl:value-of select="$comma"/>
</xsl:for-each>
</xsl:template>
<xsl:template match="*">
<xsl:variable name="textVal" select="*/text()" />
<xsl:value-of select="translate($textVal, ',' ,' ')" />
</xsl:template>
</xsl:stylesheet>
我的输出是一个CSV文件,所以我想替换的任何节点和属性包含有空格逗号值。
尝试用空格替换逗号的第二个模板不起作用。 我也尝试将这两个语句放在第一个模板的开头,但那不起作用。
可能的重复http://stackoverflow.com/questions/10898952/how-to-replace-commas-with-spaces-in-xsl?rq=1 –