使用xslt从xml中检索的值中删除引号('')

时间:2012-02-28 12:50:01

标签: xml xslt

我有这样的XML

 <P style="TEXT-ALIGN: center; MARGIN: 0pt">
        <SPAN style="FONT-FAMILY: 'Times New Roman';  FONT-SIZE: 36pt FONT-WEIGHT: bold">Form</SPAN>
            <SPAN style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 25pt; FONT-WEIGHT: bold">Form</SPAN>
            <SPAN style="FONT-FAMILY: 'COMIC SANS MS'; FONT-SIZE: 6.7pt; FONT-WEIGHT: bold">Form</SPAN>
            <SPAN style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE:10pt; FONT-WEIGHT: bold;TEXT-DECORATION:underline">10-Q</SPAN>
            <SPAN style="FONT-FAMILY: 'CURSIVE'; FONT-SIZE:14pt">Hisasdf @ adsfkej % adsfkj-Q</SPAN>
            <SPAN style="FONT-FAMILY: 'Edwardian Script ITC'; FONT-SIZE:18pt">Singhaniadf kurmad-Q</SPAN>
            <SPAN style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 7pt">anurag arya fateh ali khan-Q</SPAN>
            <SPAN style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE:12pt;TEXT-DECORATION:underline">rakesh kumar sinfhania</SPAN>
      </P>
 <xsl:variable name="Fface">
    <xsl:value-of select="(normalize-space(substring-before(substring-after(@style,'FONT-FAMILY:'),';')))"/>
</xsl:variable>

我使用此代码来识别字体系列及其工作正常,并使用此

给我值
<xsl:value-of select="$Fface"/>

但我获得的价值是'TIMES NEW ROMAN'有引号,但我希望它没有这些引号 所以要做的是有任何程序来做到这一点

2 个答案:

答案 0 :(得分:1)

如果您确定撇号始终存在,您可以使用子字符串函数来执行此操作

<xsl:value-of select="substring($Fface, 2, string-length($Fface) - 2)" />

答案 1 :(得分:1)

如果你想使用translate函数从值中删除撇号,你可以这样做:

<xsl:value-of select='translate($Fface, "&apos;", "")' />

这会从值中删除所有撇号,而不仅仅是在结尾处的那些撇号。

请注意在上述陈述中如何使用任意性(&#39;)和引号(&#34;)与正常情况相反。

如果你确实想把它全部放在一个大的陈述中,你会这样做,虽然它不会那么容易阅读。

<xsl:value-of select='translate(normalize-space(substring-before(substring-after(@style,"FONT-FAMILY:"),";")), "&apos;", "")' />