如何从XSLT中的连接变量中清除噪声字符

时间:2014-04-09 21:43:15

标签: java xml variables xslt

我有一段XSLT代码:

<xsl:variable name="VulnerabilityURI">
    http://web.nvd.nist.gov/view/vuln/detail?vulnId=
</xsl:variable>
<xsl:variable name="WeaknessURI">
    http://cwe.mitre.org/data/definitionsn
</xsl:variable>
<xsl:variable name="CVEURI">
    http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=
</xsl:variable>
<xsl:variable name="cweID" select="substring(vuln:cwe/@id,5)" />
<xsl:template match="/*/*">
    <xsl:variable name="cveID" select="vuln:cve-id" />
    <xsl:element name="rdf:Description">
        <xsl:attribute name="rdf:about">
            <xsl:value-of select="concat($VulnerabilityURI, $cveID)" />
        </xsl:attribute>
        <aseg:cveID>
            <xsl:value-of select="concat($CVEURI,$cveID)" />
        </aseg:cveID>

输出如下:

  <?xml version="1.0" encoding="UTF-8"?>
  .....
  .....
  <rdf:Description rdf:about="&#10;&#9;&#9;http://web.nvd.nist.gov/view/vuln/detail    
    vulnId=&#10;&#9;CVE-2010-2227">
  <aseg:cveID>
    http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=
CVE-2010-2227</aseg:cveID> 

正如您在结果的这一部分中所看到的,我想要的连接变量产生了未知字符

  &#10;&#9  

任何人都可以帮我解决问题吗?!!

1 个答案:

答案 0 :(得分:5)

这些“噪音字符”是换行符和制表符。而不是

<xsl:variable name="VulnerabilityURI">
    http://web.nvd.nist.gov/view/vuln/detail?vulnId=
</xsl:variable>

你可以写

<xsl:variable 
    name="VulnerabilityURI" 
    select="'http://web.nvd.nist.gov/view/vuln/detail?vulnId='" >

然后你就不会得到那些角色。

您还需要在设置CVE ID时执行类似操作。