Curly引用XSLT中的实现

时间:2014-11-11 07:06:43

标签: xml xslt

我正在尝试在XSLT中实现引号。但是,对于某些边缘情况,它失败了。 请考虑以下输入:

<p>"This is a "sample quote text" that needs to be checked"</p>

现在,我想将直引号转换为引号。我在网上看到的所有实现都替换了直接引号来交替打开和关闭卷曲引号。但是,在这种特殊情况下失败,其中所需的输出是:

<p>“This is a “sample quote text” that needs to be checked”</p>

我要做的是检查报价前是否有空格。如果存在空间,则打开报价,否则收盘报价。例外是行的开头和结尾的引号。我不确定如何在遇到报价时检查以前的字符,并且还可以同时处理开始和结束报价。

任何帮助将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:0)

我曾经遇到类似的问题,直到我意识到我正在使用XSLT来呈现HTML。由于我可以使用CSS,我终于想出了下面的解决方案(来源:http://css-tricks.com/almanac/properties/q/quotes/)。

首先,我定义了CSS规则:

q {
  quotes: "“" "”" "“" "”";
}
q:before {
    content: open-quote;
}
q:after {
    content: close-quote;
}

正如您所看到的,应用于quotes元素的CSS规则中的q属性告诉已引用文本中的内部引号也使用相同的符号。

其次,我使用<q>而不是使用“(我不知道你的情况是否容易;我的是)。

最后,下面的段落按预期呈现。同样,我假设您正在呈现HTML:

<p><q>This is a <q>sample quote text</q> that needs to be checked</q></p>