使用样式表删除 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/statValue1, '*\%!@$&', '')"/>
</xsl:stylesheet>
使用
<xsl:template match="statValues/statValue1">
<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>
我有各种方法可以删除 "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/statValue1, '*\%!@$&', '')"/>
</xsl:stylesheet>
使用
<xsl:template match="statValues/statValue1">
<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>