2013-01-09 61 views
1

我正在嘗試使用帶有字符映射的xsl文檔替換我的xml文件中的某些特殊字符;這裏是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 &#38; Soy Sauce Almonds</Name></Item> 
    <Item><Name>Peanut Butter &#38; Jelly Spread</Name></Item> 
    <Item><Name>Pork &#38; Beans</Name></Item> 
    <Item><Name>Coca Cola&#174;</Name></Item> 
    <Item><Name>Sprite&#174;</Name></Item> 
    <Item><Name>Dr. Pepper&#174;</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="&#38;" string="and"/> 
     <xsl:output-character character="&#174;" 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:輸出需要糾正,或者如果它是別的。

謝謝! AC

回答

2

除非您使用的是Saxon CE,否則您的瀏覽器只處理XSLT 1,它不支持字符映射。 (並且,您的架構沒有定義<Groceries><Item>,但這並不重要,因爲瀏覽器也不會看它,但是在架構感知模式下的XSLT 2解析器可能會抱怨... )

+0

謝謝!我實際上需要通過撒克遜運行它 - 它現在正在工作! – user1960614