我正在编写一个XSLT来为HTML Help Viewer 1.0生成HTML。某些标题包含<
和>
序列。当观察者将它们转换回尖括号时,这会导致观察者出现大量问题。已经在网上阅读,因为有Unicode版本可以使用(http://mshcmigrate.helpmvp.com/faq/notes10)我尝试使用replace函数来执行此操作,结果与输入相同。< / p>
我使用的代码是:
replace(replace(/*/name, '<', '<'), '>', '>')
输入:
DocumentationTest.GenericClass<T> Namespace
输出为:
DocumentationTest.GenericClass<T> Namespace
如何执行字符串替换以获得此输出?
DocumentationTest.GenericClass<T> Namespace
答案 0 :(得分:1)
<
和<
是同一角色的两种不同表示形式。您可以使用replace()(或更简单地说,translate())将一个字符更改为另一个字符,但您不能使用它来控制该字符在序列化输出中的表示方式 - 这完全取决于序列化程序。但是,您可以使用字符映射来影响它 - 请参阅xsl:character-map。
答案 1 :(得分:0)
这是正确的行为,因为XML解析器本身在XSLT得到它之前执行。如果您必须在文档中保留<
,则应将其编码为&lt;
,并在所有&
符号上进行简单查找和替换,并将其替换为&
,应该做的。