首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过XML和XSL (i18n上下文)生成HTML页面的问题

通过XML和XSL (i18n上下文)生成HTML页面的问题
EN

Stack Overflow用户
提问于 2019-08-07 09:21:36
回答 2查看 73关注 0票数 0

我尝试使用密钥转换系统来国际化一个xsl。我有一个主xsl文件,它引用键,并使用所有键(英语或法语)导入另一个xsl。问题:在法语中,我们的单词中有简单的引号。结果:我的最后一个HTML页面没有正确生成

经过一些研究:我试着用&apos代替简单的引语。我尝试用双引号('')代替简单引号(')

主XSL文件:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fn="http://www.w3.org/2005/xpath-functions" xmlns:fo="http://www.w3.org/1999/XSL/Format">

<xsl:import href="translation_fr.xsl"/>

<xsl:output method="html" encoding="UTF-8" indent="yes"/>

(other contents ...)

<table class="report-table">
 <thead>
  <tr>
   <th class="report-sub-title" colspan="4"><xsl:value-of select="$lang.mainData"/></th>
  </tr>
 </thead>

(other contents ...)

I18 FR XSL

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:fn="http://www.w3.org/2005/xpath-functions" 
    xmlns:fo="http://www.w3.org/1999/XSL/Format">

    <xsl:variable name="lang.mainData" select="'test d'un apostrophe'"/>
</xsl:stylesheet>

当我在xsl:value-of和select中使用简单引号时,不会生成我的HTML。我希望:'test d‘’un撇号‘字符串显示在我的页面中。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-08-07 10:26:23

如果您确实使用了XSLT 2处理器,并且可以在XPath属性的表达式级别使用select 2,那么您可以使用select="'test d''un apostrophe'"来解决它(请参阅字符串文本规则的https://www.w3.org/TR/xpath20/#prod-xpath-StringLiteral ),但它似乎更容易使用。

代码语言:javascript
复制
<xsl:variable name="lang.mainData" as="xs:string">test d'un apostrophe</xsl:variable>

(确保样式表随后声明xmlns:xs="http://www.w3.org/2001/XMLSchema")。

票数 1
EN

Stack Overflow用户

发布于 2019-08-07 13:07:28

在托管语言中,这是关于分隔符的常见情况:在本例中,XSLT作为XML词汇表,而XPath在某些属性中作为字符串。它是如此普遍,以至于规格说明预见到了这一点。

XPath表达式经常出现在XML属性中。本节中指定的语法适用于XML1.0规范化后的属性值。因此,例如,如果语法使用字符<,则这不能以<的形式出现在XML中,而必须根据XML1.0规则引用,例如,输入它为&lt;。在表达式中,文字字符串由单引号或双引号分隔,而单引号或双引号也用于分隔XML属性。为了避免XML处理器将表达式中的引号解释为终止属性值,可以将引号输入为字符引用(&quot;&apos;)。或者,如果XML属性用双引号分隔,则表达式可以使用单引号,反之亦然。

在该引号之后,XSLT指令如下所示:

代码语言:javascript
复制
<xsl:variable name="lang.mainData" select="&quot;test d'un apostrophe&quot;"/>

代码语言:javascript
复制
<xsl:variable name="lang.mainData" select='"test d&apos;un apostrophe"'/>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57391028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档