当标记包含编码字符时,XML通过XSL进行转换

时间:2013-04-22 05:04:55

标签: xml xslt

更新:失败的案例

<?xml version="1.0" encoding="ISO-8859-1"?>

<catalog>
    <cd>
        <title>Empire &amp; Burlesque</title>
        <artist>Bob Dylan</artist>
        <country>USA</country>
        <company>Columbia</company>
        <price>10.90</price>
        <year>1985</year>
    </cd>   
</catalog>
<catalog>
    <cd>
        <title>Empire & Burlesque</title>
        <artist>Bob Dylan</artist>
        <country>USA</country>
        <company>Columbia</company>
        <price>10.90</price>
        <year>1985</year>
    </cd>   
</catalog>

您好我有以下XML

<catalog>
    <cd>
        <title>Empire Burlesque</title>
        <artist>Bob Dylan</artist>
        <country>USA</country>
        <company>Columbia</company>
        <price>10.90</price>
        <year>1985</year>
    </cd>   
</catalog>

以下XSL翻译上面的

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
  <html>
  <body>
  <h2>My CD Collection</h2>
    <table border="1">
      <tr bgcolor="#9acd32">
        <th>Title</th>
        <th>Artist</th>
      </tr>
      <xsl:for-each select="catalog/cd">
      <tr>
        <td><xsl:value-of select="title"/></td>
        <td><xsl:value-of select="artist"/></td>
      </tr>
      </xsl:for-each>
    </table>
  </body>
  </html>
</xsl:template>
</xsl:stylesheet>

到目前为止,翻译工作正常。但是,如果我将XML标记值更改为包含&&amp;等编码字符,则表示我没有得到结果

如何逃避这些角色?

1 个答案:

答案 0 :(得分:0)

您必须将&更改为&amp;,这应该可以正常工作。因为看起来你已经尝试过了。您可以尝试&#38;&#x26;,它们分别是&字符的十进制和十六进制unicode引用。

<?xml version="1.0" encoding="ISO-8859-1"?> 
<catalog> 
  <cd> 
    <title>Empire &#x26; or &#38; Burlesque</title> 
    <artist>Bob Dylan</artist> 
    <country>USA</country> 
    <company>Columbia</company> 
    <price>10.90</price> 
    <year>1985</year> 
  </cd>
</catalog>

如果不能解决问题,我可以知道使用哪个XSLT处理器来产生输出吗?