使用XSL将文章XML转HTML:多语言关键词无法显示求助
解决XSL转换XML时多语言关键词不显示的问题
嘿,我来帮你搞定这个多语言关键词不显示的问题!结合你提到的abstract和trans-abstract标签,咱们从几个常见原因入手排查:
1. XSL未匹配到trans-abstract标签的内容
如果你的XSL模板只处理了abstract标签,那trans-abstract里的关键词自然不会被渲染到HTML里。你需要添加对应的模板来匹配这个标签,或者在现有模板里同时包含两个标签的匹配逻辑。
举个例子,假设你的XML里关键词在<keywords>子标签中,你可以这样写XSL模板:
<!-- 匹配abstract和trans-abstract标签 --> <xsl:template match="abstract | trans-abstract"> <div class="abstract"> <h3><xsl:value-of select="title"/></h3> <!-- 处理段落内容 --> <xsl:apply-templates select="p"/> <!-- 提取并显示关键词 --> <xsl:if test="keywords"> <div class="keywords"> <strong>关键词:</strong> <xsl:for-each select="keywords/keyword"> <span class="keyword"><xsl:value-of select="."/></span> <xsl:if test="position() != last()">, </xsl:if> </xsl:for-each> </div> </xsl:if> </div> </xsl:template>
2. 字符编码设置错误
非英文语言(比如你示例里的西班牙语)显示异常,大概率和编码有关。要确保:
- XML文件开头声明正确的编码:
<?xml version="1.0" encoding="UTF-8"?> - XSL文件里输出HTML时指定UTF-8编码:
<xsl:output method="html" encoding="UTF-8" indent="yes"/>
同时,确保你打开HTML时浏览器也用UTF-8编码解析(一般浏览器会自动识别,但可以手动设置)。
3. 关键词的嵌套结构未被正确遍历
如果你的关键词不是直接在abstract/trans-abstract下,而是嵌套在更深的子标签里(比如<p><italic>... <keywords>...</keywords></italic></p>),那你需要调整XSL的选择器路径,精准定位到关键词节点。
比如针对你提供的XML片段,如果关键词藏在<p>里,你可以修改模板:
<xsl:template match="abstract | trans-abstract"> <div class="abstract"> <h3><xsl:value-of select="title"/></h3> <xsl:apply-templates select="p"/> <!-- 从p标签下提取关键词 --> <xsl:if test="p/keywords"> <div class="keywords"> <strong>Palabras clave:</strong> <xsl:for-each select="p/keywords/keyword"> <span class="keyword"><xsl:value-of select="."/></span> <xsl:if test="position() != last()">, </xsl:if> </xsl:for-each> </div> </xsl:if> </div> </xsl:template>
你可以根据自己XML的实际结构调整这些模板逻辑,要是还有具体的节点结构细节,也可以补充出来,咱们再细化方案!
内容的提问来源于stack exchange,提问作者Sofia Navas
相关产品推荐
相关产品推荐

