[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
Re: [xsl] transforming xhtml question
Subject: Re: [xsl] transforming xhtml question From: Mike Brown <mike@xxxxxxxx> Date: Sun, 23 Mar 2003 16:57:48 -0700 (MST) |
Tyrone wrote: > I'm doing transformations to some XHTML documents. Basically I need to only > remove a few attributes and elements from them and leave the document largely > intact beyond that. You want to do an identity transformation: <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" indent="no"/> <xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> </xsl:stylesheet> This is a recursive copy-through of all nodes from source to result. Add to it templates that match the elements you want to change. These templates will match at a higher priority than the template above. For example, if you want to add a style="font-size: 85%" attribute to every 'p' element: <xsl:template match="p"> <xsl:copy> <xsl:attribute name="style">font-size: 85%</xsl:attribute> <xsl:apply-templates select="@*[name() != 'style']|node()"/> </xsl:copy> </xsl:template> The apply-templates allows the recursive copy-through to continue down into the contents of the <p>...</p>. The predicate on the @* prevents any existing 'style' attribute from overwriting the new one you just created. > I'm having problems navigating to the html elment and other elements when I > leave the Doctype and namespace at the top of the xhtml doc. I assume I'm > missing something in my xpath syntax Yes. In your stylesheet (preferably at the top), bind a prefix to the namespace that the XHTML elements are in. Use this prefix when referring to element names in XPath expressions. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xhtml="http://www.w3.org/1999/xhtml"> <xsl:template match="xhtml:p"> ... > <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" > "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> Note that when you feed this to an XML parser, the DTD is most likely being read from the w3.org site. I would use a local DTD if possible. > I've been looking for some kind of XPATH tool that will let me see how a > document tree is represented in XPATH syntax. If anyone knows of such a tool > could you post a link? Various XML editors have tree visualization modes, but you could use the stylesheets Jeni Tennison and I developed to produce an ASCII art view that you might find appealing. Download them from http://skew.org/xml/ (ASCII XML Tree Viewer or Pretty XML Tree Viewer... try both) Mike -- Mike J. Brown | http://skew.org/~mike/resume/ Denver, CO, USA | http://skew.org/xml/ XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] transforming xhtml question, Tyrone | Thread | Re: [xsl] transforming xhtml questi, David Carlisle |
RE: [xsl] How efficient is DVC? - A, Michael Kay | Date | RE: [xsl] tail recursion optimizati, Jarno . Elovirta |
Month |