我正在尝试使用带有字符映射的xsl文档来替换我的xml文件中的某些特殊字符;这是xml:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="lesson12.xsl" type="text/xsl"?>
<!DOCTYPE Groceries>
<Groceries xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="lesson12.xsd">
<Item><Name>Wasabi & Soy Sauce Almonds</Name></Item>
<Item><Name>Peanut Butter & Jelly Spread</Name></Item>
<Item><Name>Pork & Beans</Name></Item>
<Item><Name>Coca Cola®</Name></Item>
<Item><Name>Sprite®</Name></Item>
<Item><Name>Dr. Pepper®</Name></Item>
</Groceries>
这是我的架构:
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Name" type="xs:token" />
</xs:schema>
这是我的xsl:
<?xml version="1.0"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
version="2.0">
<xsl:output method="html" use-character-maps="my_char_map" />
<xsl:character-map name="my_char_map">
<xsl:output-character character="&" string="and"/>
<xsl:output-character character="®" string="TM"/>
</xsl:character-map>
<xsl:template match="/">
<h3>Groceries</h3>
<xsl:for-each select="/Groceries/Item/Name">
<ul>
<li>
<xsl:value-of select="."/>
</li>
</ul>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
我还在学习xml,不确定我的xsl:output是否需要更正,或者是否还有其他内容。
谢谢! AC
答案 0 :(得分:2)
除非您使用Saxon CE,否则您的浏览器只会处理不支持字符映射的XSLT 1。
(并且,您的架构没有定义<Groceries>
或<Item>
,但这没关系,因为浏览器也不会查看它。但是模式中的XSLT 2解析器 - 意识模式可能会抱怨......)