OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

 


 

   Re: [xml-dev] converting character entities to us-ascii /equivalents/

[ Lists Home | Date Index | Thread Index ]

Michael Kay wrote:

> If there's a limited number of non-ASCII characters you need to handle, you
> can use character maps in the XSLT 2.0 serializer.

Sorry, I should have specified that I am using v1.0. I intend to move to 
v2.0 sometime soon, but have not had the time to learn it and convert 
all of my stylesheets.

But that is good to know.

thanks,
-Rob

> 
> Michael Kay
> http://www.saxonica.com/
> 
> 
>>-----Original Message-----
>>From: Robert Koberg [mailto:rob@koberg.com] 
>>Sent: 06 October 2004 22:56
>>To: XML Developers List
>>Subject: [xml-dev] converting character entities to us-ascii 
>>/equivalents/
>>
>>Hi,
>>
>>I need to output several versions of a page (through XSL 
>>transformations), one of which is us-ascii (for email). But, 
>>the content 
>>might contain some characters that are not supported by 
>>us-ascii (like 
>>em dash - —).
>>
>>I want the character entities to remain in the content. When 
>>transforming to us-ascii, I want to replace the entities with 
>>some ascii 
>>text equivalent: For example, '—' would get converted to '--'.
>>
>>The XML is pulled into the transformation through the 
>>document function 
>>using a custom URIResolver.
>>
>>Is there an existing solution to this?
>>
>>Does Apache's FOP and the text renderer handle this type of thing?
>>
>>I have tried to set a ContentHandler (actually a 
>>DefaultHandler) on the 
>>XMLReader and tried to replace a character entity, but I am doing 
>>something wrong and a confused on how to proceed. Using the 
>>code below I 
>>get a recoverable error using saxon/aelfred and a failure when using 
>>saxon/xerces.
>>
>>Here is a snippet from the URIResolver:
>>
>>
>>InputSource in = new InputSource(file.getAbsolutePath());
>>SAXSource source = new SAXSource(in);
>>XMLReader reader = null;
>>try {
>>   reader = 
>>XMLReaderFactory.createXMLReader("com.icl.saxon.aelfred.SAXDriver");
>>   //reader = 
>>XMLReaderFactory.createXMLReader("org.apache.xerces.parsers.SA
>>XParser");
>>} catch (SAXException e) {
>>   System.err.println(e.getMessage());
>>}
>>
>>reader.setContentHandler(new AsciiHandler());
>>
>>source.setXMLReader(reader);
>>
>>return source;
>>
>>
>>
>>And the DefaultHandler has one method:
>>
>>
>>public void characters(char[] text, int start, int length) {
>>
>>   String str = new String(text, start, length);
>>   if (str.indexOf(174) > -1) {
>>    str.replaceAll("\u00AE", "(Registered Trademark)");
>>   }
>>   text = str.toCharArray();
>>}
>>
>>How can I do this? Is there a better way to handle this type of thing?
>>
>>thanks,
>>-Rob
>>
>>
>>-----------------------------------------------------------------
>>The xml-dev list is sponsored by XML.org <http://www.xml.org>, an
>>initiative of OASIS <http://www.oasis-open.org>
>>
>>The list archives are at http://lists.xml.org/archives/xml-dev/
>>
>>To subscribe or unsubscribe from this list use the subscription
>>manager: <http://www.oasis-open.org/mlmanage/index.php>
>>
>>
> 





 

News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 2001 XML.org. This site is hosted by OASIS