使用样式表删除 xml 中的“$”

remove "$" in xml with stylesheet

我有各种方法可以删除 "statValue1" 节点下的“$”,但没有成功。谁能帮我做样式表。

如果您在下面看到一些来源 XML,我需要从所有 statTitle1

中删除 $
<?xml-stylesheet type="text/xsl" href="file:///C:/Users/davidhe/Documents/Altova/XMLSpy2016/Examples/stats.xml"?>
<tours>
    <tour tourCodeLC="s" tourCodeUC="S" tourName="Group!A>
        <years>
            <year year="2016">
                <lastTrnProc trnName="Through Week Ending: 02/29/2016" permNum="000" trnNum="032" endDate="Feb 28, 2016"/>
                <stats>
                    <stat statID="109" cat="1" rndOrEvt="Events">
                        <statName>Money List</statName>
                        <explanation>
The total official money a player has earned year-to-date. (109)
</explanation>
                        <tourAvg>,906</tourAvg>
                        <statTitles numOfStatTitles="3">
                            <statTitle1>Money</statTitle1>
                            <statTitle2/>
                            <statTitle3>YTD Victories</statTitle3>
                            <statTitle4/>
                            <statTitle5>Money Behind Lead</statTitle5>
                        </statTitles>
                        <details>
                            <plr plrNum="01666">
                                <plrName>
                                    <last>Smith</last>
                                    <first>Brad</first>
                                    <middle/>
                                    <nickname/>
                                </plrName>
                                <statValues>
                                    <rndEvents>3</rndEvents>
                                    <statValue1>
                                        3,850</statValue1>
                                    <statValue2/>
                                    <statValue3>1</statValue3>
                                    <statValue4/>
                                    <statValue5/>
                                </statValues>
                                <curRank tied="">1</curRank>
                                <prevRank tied="">1</prevRank>
                            </plr>

样式表

<xsl:stylesheet version="1.0" xmlns:xsl="w3.org/1999/XSL/Transform">
  <xsl:output encoding="iso-8859-1" method="xml" indent="yes"/>
  <xsl:template match="@*|node()">
    <xsl:copy>
      <xsl:apply-templates select="@*|node()" />
    </xsl:copy>
  </xsl:template>
  <xsl:template match="translate(//tours/tour/years/year/stats/stat/details/plr[1]/statValues/st‌​atValue1, '*\%!@$&amp;', '')"/>
</xsl:stylesheet>

使用

<xsl:template match="statValues/st‌​atValue1">
  <xsl:copy>
    <xsl:value-of select="translate(., '$', '')"/>
  </xsl:copy>
</xsl:template>

而不是您拥有的第二个模板。

由于您为子元素使用了不同的名称,因此您需要更通用一些。

<xsl:template match="statValues">
  <xsl:for-each select="*" >
  <xsl:copy>
    <xsl:value-of select="translate(., '$', '')"/>
  </xsl:copy>
  </xsl:for-each>
</xsl:template>